2010-04-23 20 views
5

का उपयोग करके एक एम्बेडेड छवि है, मेरे पास पहले से ही एक सी # विंडोज सेवा है जिसे हम आंतरिक रूप से हमारे नेटवर्क पर निर्देशिका की निगरानी करने के लिए उपयोग करते हैं और जब यह पता चलता है कि हमारे आंतरिक SMTP सर्वर का उपयोग करके एक ईमेल भेजता है लोगों के निर्दिष्ट समूह।विंडोज सेवा के माध्यम से स्वचालित ईमेल भेजें जिसमें सी #

अब मुझे उस स्वचालित ईमेल में एक छवि एम्बेड करने की आवश्यकता है। मैं समझता हूं कि मुझे वैकल्पिक विकल्प और एक लिंक किए गए संसाधन को बनाने की आवश्यकता है और वैकल्पिक दृश्य में लिंक किए गए संसाधन के सीआईडी ​​ का उपयोग करें।

मुझे क्या समझ में नहीं आता है कि मैं छवि कहां रखूं? क्या मुझे इसे अपनी सेवा प्रोजेक्ट में जोड़ना चाहिए और सेट करना चाहिए? यदि हां, तो मैं अपना लिंकड रिसोर्स बनाते समय कैसे पहुंचूं? साथ ही, मैं सेवा को होस्ट करने वाले सर्वर पर छवि कहां रखूं?

यहां मेरे पास अभी तक है लेकिन यह काम नहीं कर रहा है। मुझे कोई त्रुटि नहीं है, जिसे मैं जानता हूं, लेकिन मुझे ईमेल भी नहीं मिला है। मुझे लगता है कि यह छवि की तलाश में है लेकिन मेरे पास सही स्थान पर नहीं है।

// This event is called when an object(file,folder) is created in the srcPath 
    void WatcherCreated(object source , FileSystemEventArgs e) 
    { 
     var folderName = e.Name; 
     var folderPath = e.FullPath; 

     MailMessage mail = new MailMessage(); 

     mail.From = new MailAddress("[email protected]"); 
     mail.To.Add("[email protected]"); 

     mail.Subject = "New Enrollment for " + folderName; 

     AlternateView plainView = AlternateView.CreateAlternateViewFromString("This is the plain text view", null, 
                       "text/html"); 

     AlternateView htmlView = 
      AlternateView.CreateAlternateViewFromString("Here is an embedded image. <img src=cid:enrollProcessID>", 
                 null, "text/html"); 

     LinkedResource imageResourceLink = new LinkedResource("C:\\FolderMonitorService\\EnrollmentProcess.jpg") 
               {ContentId = "enrollProcessID"}; 

     htmlView.LinkedResources.Add(imageResourceLink); 

     mail.AlternateViews.Add(plainView); 
     mail.AlternateViews.Add(htmlView); 

     var smtp = new SmtpClient("internalSMTP"); 
     smtp.Send(mail); 
    } 
+0

@ रिफ्रैक्टेड: सेवा के फ़ोल्डर में छवि डालने और फ़ाइल पथ से इसे एक्सेस करने का नुकसान क्या है? –

+0

@KMan: कोई विचार नहीं ... क्या मुझे यह करना चाहिए? क्या "सेवा फ़ोल्डर" फ़ोल्डर है जिसे मैंने एक्सई इंस्टॉल किया है या क्या कोई विशेष एमएस सेवाएं घर है? –

+0

यह निर्भर करता है कि आप एप्लिकेशन/डेटा को स्टोर करने के लिए क्या/कैसे चुनते हैं। छवि को एम्बेडेड संसाधन के रूप में सहेजना पूरी तरह से सामान्य है; और यदि आप भविष्य में छवि को बदलने की योजना बनाते हैं तो इसे एक अलग फ़ाइल के रूप में रखने के लिए बेहतर है। –

उत्तर

2

असल में, आप यहाँ त्रुटि की गलत व्याख्या कर रहे हैं .. आपका कोड बिलकुल ठीक जहाँ तक मैं कर सकते हैं है देखें .. बस इसे दोबारा जांचने के लिए, मैंने इसे एक साधारण ऐप में कॉपी किया, एक छवि के लिए स्थानीय पथ को अपडेट किया और इसे चलाया - मुझे तुरंत ई-मेल प्राप्त हुआ ..

इसके अलावा, अगर मैं इसे एक फाइल करने के लिए एक गलत रास्ता दे - यह एक अपवाद तुरंत फेंक देते हैं, यह बताते हुए कि फ़ाइल नहीं मिला है :)

आप अपने मेलबॉक्स यह हो सकता है में छवि प्राप्त नहीं होता है हो कि स्पैम फिल्टर यह फ़िल्टर कर रहे हैं .. मैं यहाँ एसएमटीपी सर्वर की सेटिंग्स को खारिज कर रहा हूँ, क्योंकि तुम कहते हो एक प्लेन टेक्स्ट भेजने केवल संस्करण में काम करता है कि :)

युपीडी: मैं व्यक्तिगत अनुभव से क्या सुझाव है बदल रहा है यूटीएफ 8 के लिए एन्कोडिंग। यह मानदंडों में से एक था कि मेरे मेल संदेशों को स्पैम फ़िल्टर द्वारा क्यों हटाया गया था .. इसके अलावा- आपका कोड ठीक दिखता है, और मुझे इसके लिए कोई कारण नहीं दिखता है .. यह मेरे पक्ष में काम करता है:)

संबंधित मुद्दे