2009-09-10 18 views
5

मैंने इसे MailMessage.Headers.Set कॉल के माध्यम से VB.net में पूरा करने का प्रयास किया। नीचे देखें:मैं .NET से पिछली तारीख के साथ एक ई-मेल कैसे भेज सकता हूं?

Dim objMail As MailMessage 
    Dim objSMTPClient As SmtpClient 

    objMail = New MailMessage() 
    objSMTPClient = New SmtpClient() 

    objMail.From = New MailAddress(MY_EMAIL_ADDRESS) 
    objMail.To.Add(New MailAddress(TEST_EMAIL_ADDRESS)) 
    objMail.Headers.Set("Date", "09 Jan 1999 17:23:42 -0400")'date in the past' 

    objMail.Subject = "The Subject" 
    objMail.Body = "The Body" 

    objSMTPClient.Port = 25 
    objSMTPClient.Host = HOST_IP 
    objSMTPClient.Credentials = New System.Net.NetworkCredential(MY_EMAIL_ADDRESS, txtPassword.Text) 
    objSMTPClient.Send(objMail) 

मैं पुष्टि की है कि objMail.Headers.Set कॉल वास्तव में काम कर रहा है - अगर मैं मूल्य बाद में मिलता है, इसे सफलतापूर्वक बदल दिया गया है। मेरी समस्या यह है कि जब मुझे TEST_EMAIL_ADDRESS के Outlook में ई-मेल प्राप्त होता है, तो तिथि 200 9 है, न कि 1 999। आउटलुक इंटरफ़ेस में और शीर्षलेख में, जिसे मैं संदर्भ में "विकल्प" आइटम के माध्यम से एक्सेस करता हूं उस ई-मेल के लिए मेनू।

मैं क्या गलत कर रहा हूं? मुझे लगता है कि मुझे कुछ स्पष्ट याद आया ...

स्पष्ट होने के लिए: मैं दुर्भावनापूर्ण इरादे से ऐसा कर रहा हूं। मैं एक ई-मेल एकीकरण घटक पर काम कर रहा हूं जो एकीकृत करने के लिए पहले नए ई-मेल का पता लगाने के लिए यूआईडी और "अंतिम संसाधित" तिथि दोनों का उपयोग करता है। मैं उन मामलों का परीक्षण करना चाहता हूं जहां एकाधिक ई-मेल की सटीक तारीख/समय होती है - क्योंकि ई-मेल एकीकरण मॉड्यूल को उन परिस्थितियों को निष्पक्ष रूप से संभालना चाहिए। अगर मैं इस तरह की नकली तारीख को नकली कर सकता था, तो मैं कई ई-मेल भेज सकता था क्योंकि मैं चाहता था कि एक निश्चित तिथि/समय से मेल खाता हो, बजाय उन्हें एक स्वचालित स्क्रिप्ट के साथ भेजने की कोशिश कर रहा हो - उम्मीद है कि वे सभी एक ही दूसरे के भीतर प्राप्त होंगे । ऐसा लगता है कि मुझे एक और दृष्टिकोण लेने की आवश्यकता होगी, हालांकि।

+9

पर शायद यह प्रश्न में सर्वर द्वारा खारिज कर दिया गया है, जो संदेश को प्राप्त करने के समय रिकॉर्ड करता है, जब संदेश कहता है कि यह भेजा गया था । –

+0

मुझे लगता है कि नेटवर्क को सूँघने में मदद मिलेगी। या कम से कम आपके एसएमटीपी सर्वर –

+0

@Lasse V. Karlsen के भीतर अतिरिक्त लॉगिंग डेविड स्ट्रैटन ने कहा, आपको उस टिप्पणी को एक उत्तर के रूप में जोड़ना चाहिए। यह समझ में आता है। मुझे एक बेहतर दृष्टिकोण के बारे में सोचना होगा। –

उत्तर

2

@Lasse V. Karlsen के नोट पर जोड़ना, मुझे लगता है कि संभवतः एसएमटीपी सर्वर कोड में संदेश में जो कुछ डालता है उसे ओवरराइड कर रहा है। सभी ईमानदारी में, आपको अतीत में भेजे गए ईमेल की तरह क्यों दिखने की आवश्यकता होगी? मैं एक ऐसे कारण के बारे में नहीं सोच सकता जो कम से कम बेईमानी या दुर्भावनापूर्ण नहीं है।

तो, यह मुझे समझ में आता है कि अगर सर्वर संदिग्ध लग रहा है तो सर्वर इस शीर्षलेख को ओवरराइट करेगा। मुझे नहीं पता कि वास्तव में क्या हो रहा है, लेकिन मैं शर्त लगाता हूं कि @Lasse V. Karlsen सही है।

यदि ऐसा है, तो संभावित समाधान एसएमटीपी सर्वर पर अतीत में कुछ तारीख को बदलना होगा (यदि आप सर्वर को नियंत्रित करते हैं और ऐसा करने में सक्षम हैं)।

फिर भी, मुझे आश्चर्य है कि आप ऐसा क्यों करना चाहते हैं। क्या आप विस्तार से समझा सकते हैं?

जोड़ा गया

@Lasse वी Karlsen - मैं तुम्हें तो आप इसके लिए क्रेडिट प्राप्त जवाब के रूप में अपना नोट पोस्ट चाहिए।

+3

मैं एक ई-मेल एकीकरण घटक पर काम कर रहा हूं जो एकीकृत करने के लिए पहले नए ई-मेल का पता लगाने के लिए यूआईडी और "अंतिम संसाधित" तिथि दोनों का उपयोग करता है। मैं उन मामलों का परीक्षण करना चाहता हूं जहां एकाधिक ई-मेल की सटीक तारीख/समय होती है - क्योंकि ई-मेल एकीकरण मॉड्यूल को उन परिस्थितियों को निष्पक्ष रूप से संभालना चाहिए। अगर मैं उस तरह की तारीख को नकली कर सकता था, तो मैं जितना चाहूं उतने ई-मेल भेज सकता था, जो कि एक निश्चित तारीख/समय से मेल खाता था, बजाय उन्हें एक स्वचालित स्क्रिप्ट के साथ भेजने की कोशिश करने के बजाय - उम्मीद है कि वे सभी एक ही सेकंड में प्राप्त होंगे । –

+0

ऐसा करने के लिए मुझे बेहतर तरीके से आना होगा, ऐसा लगता है। परीक्षण के लिए टिप्पणीकर्ता को –

+0

+1! एकीकरण घटक के लिए मेल संदेशों को उत्पन्न या नकल करने का एक तरीका हो सकता है ताकि आपको उस भाग का परीक्षण करने के लिए वास्तव में मेल सर्वर के माध्यम से उन्हें भेजने की आवश्यकता न हो। आप अभी भी मेल सर्वर के साथ एकीकरण परीक्षण कर सकते हैं, लेकिन ये विशेष परीक्षण पृथक इकाई परीक्षणों के रूप में बेहतर काम कर सकते हैं। – TrueWill

0

हैडर मूल्य संदेश वर्ग में ओवरराइट किया जा रहा है जब हेडर की तैयारी:

this.Headers.InternalAdd(MailHeaderInfo.GetString(MailHeaderID.Date), MailBnfHelper.GetDateTimeString(DateTime.Now, null)); 

कारण यह है कि मैं (असफल) कोशिश कर रहा हूँ यह मान सेट क्योंकि मैं एक अलग गणना हेडर के लिए यह पता करने की जरूरत है । मुझे लगता है कि "पर्याप्त करीब" करना होगा।

+1

मुझे स्पष्ट नहीं है कि यह उत्तर प्रश्न पर कैसे लागू होता है? – Krease

1

आप हेडर संपत्ति में कस्टम शीर्षलेख जोड़ सकते हैं; हालांकि, तारीख सहित कुछ आरक्षित शीर्षलेखों के लिए नहीं। प्रलेखन में कहा गया है कि प्रतिबंधित हेडर को कस्टम मान को छोड़ दिया जाएगा या ओवरराइट किया जाएगा here एमएसडीएन

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

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