2012-05-27 20 views
6

स्थानीय मेल सर्वर (hMailServer) के माध्यम से ईमेल भेजने के लिए .NET में SmtpClient और MailMessage classes का उपयोग करके, मुझे वर्तमान में भेजे गए संदेश के Message-ID शीर्षलेख मान प्राप्त करने का कोई तरीका नहीं मिला।क्या SmtpClient के साथ भेजे गए ईमेल संदेश का "संदेश-आईडी" कैप्चर करना संभव है?

पीछे

मैं प्रोग्राम के रूप में जो संदेश वितरण योग्य नहीं हैं ट्रैक करने के लिए कोशिश कर रहा हूँ, इसलिए मैं गंतव्य एसएमटीपी सर्वर है कि एक निश्चित संदेश को खारिज कर दिया से उत्तरों को पहचानने के लिए एक रास्ता खोजने के लिए विचार।

अब मैंने Message-ID एसएमटीपी हेडर वैल्यू को याद रखने और इस आईडी के लिए इनकमिंग मेल को पार्स करने के बारे में सोचा था।

संदेश भेजने के बाद मैंने Headers collection का निरीक्षण करने का प्रयास किया है, लेकिन मुझे कोई Message-ID नहीं मिला।

मेरा प्रश्न

यह Message-ID हैडर मूल्य है कि मेरे एसएमटीपी सर्वर एक MailMessage उदाहरण भेजने के दौरान कहते हैं प्राप्त करने के लिए संभव है?

अद्यतन 2012-05-27

प्रति this example मैं सफलतापूर्वक मैन्युअल अपने दम पर एक Message-ID उत्पन्न करने के लिए, बस भेजने से पहले की कोशिश की है के रूप में।

मेरे सभी उदाहरण अब तक काम करते हैं, इसलिए लगता है कि यह मेरे प्रश्न का समाधान है।

+1

मुझे पूरा यकीन है कि आईडी को SMTP सर्वर द्वारा असाइन किया गया है, और SMTP प्रोटोकॉल क्लाइंट को उस मान को वापस लौटने का निर्दिष्ट नहीं करता है। इसके आस-पास एक तरीका बीसीसी को आपके द्वारा नियंत्रित खाते में एक ही संदेश होगा, और उस संदेश से संदेश आईडी निकालें ... यह मानते हुए कि संदेश आईडी प्रारंभिक SMTP सर्वर पर एक बार उत्पन्न होती है। एक और संभावना ईमेल पर कस्टम "एक्स-टैग" जोड़ना है। –

+0

धन्यवाद, @ जेरेमीहोलोवाक्स - मैंने पहले ही एक कस्टम टैग जोड़ने की कोशिश की है (हालांकि "एक्स-" उपसर्ग के साथ नहीं) ऐसा लगता है कि संदेश को अग्रेषित करने या जवाब देने पर यह टैग खो गया है। –

+1

दुर्भाग्यवश प्रति http://stackoverflow.com/questions/7095104/how-to-confirm-that-mail-has-been-delivered- या- इसके लिए बुलेटप्रूफ विधि नहीं है। –

उत्तर

2

आपकी समस्या का मानक समाधान VERP है। Message-Id एट अल क्यों पता लगाने के लिए बर्नस्टीन के मूल लेख को पढ़ें। विश्वसनीय नहीं हैं। http://cr.yp.to/proto/verp.txt

+1

जीमेल के साथ वीईआरपी कैसे करना है यह जानने की कोशिश कर रहा है ... प्रमाणित खाते पर ईमेल के साथ जीमेल ओवरराइड होने के बाद से प्लस पते का उपयोग नहीं कर सकता है (भले ही आपका प्लस पता प्रमाणीकृत ईमेल पते पर आधारित हो)। – MikeJansen

+1

@ माइकजांसेन: यदि आपके पास कोई प्रश्न है, तो एक प्रश्न पोस्ट करें। – tripleee

+1

क्षमा करें, यकीन नहीं है कि मैंने यह टिप्पणी क्यों पोस्ट की है। जीमेल के साथ वास्तव में वीईआरपी नहीं कर सकता जो मुझे मिला है। यह पोस्ट सारांशित करता है जो मैंने पाया है: http://stackoverflow.com/questions/9925392/does-gmail-not-allow-sender-to-set-a-return-path-value-to-receive-bounce-message । मुझे एक और एसएमटीपी सर्वर, मेरा या एक अन्य प्रदाता का उपयोग करने की आवश्यकता होगी। – MikeJansen

2

ईमेल भेजने से पहले आप अपना संदेश आईडी जोड़ सकते हैं।

Guid id = Guid.NewGuid(); //Save the id in your database 
mensajeEmail.Headers.Add("Message-Id", String.Format("<{0}@{1}>",id.ToString(),"mail.example.com")); 

नोट:: मैं अगले कोड का उपयोग डाउनलोड संदेशों के लिए मैं OpenPop.Net उपयोग करते हैं, मैं message.Headers.InReplyTo संपत्ति की जांच, और वहाँ संदेश आईडी sended है।

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

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