كيف يمكنني إرسال بريد إلكتروني بتاريخ سابق من .NET؟

StackOverflow https://stackoverflow.com/questions/1407962

  •  05-07-2019
  •  | 
  •  

سؤال

لقد حاولت إنجاز ذلك عبر استدعاء MailMessage.Headers.Set، في VB.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's Outlook، يكون التاريخ 2009 في كل مكان، وليس 1999.هناك مباشرة في واجهة Outlook، وأيضًا في الرأس، الذي يمكنني الوصول إليه عبر عنصر "الخيارات" في قائمة السياق الخاصة بهذا البريد الإلكتروني.

ما الخطأ الذي افعله؟عندي احساس اني نسيت شي واضح

لكي نكون واضحين:أنا أكون لا القيام بذلك بنية خبيثة.أنا أعمل على مكون تكامل البريد الإلكتروني الذي يستخدم كلاً من المعرفات الفريدة (UID) وتاريخ "آخر معالجة" لتحديد موقع أول بريد إلكتروني جديد للتكامل.أرغب في اختبار الحالات التي تحتوي فيها رسائل البريد الإلكتروني المتعددة على نفس التاريخ/الوقت بالضبط - حيث يجب على وحدة تكامل البريد الإلكتروني التعامل مع هذه المواقف بشكل لا تشوبه شائبة.إذا كان بإمكاني ببساطة تزييف التاريخ بهذه الطريقة، فيمكنني إرسال أكبر عدد ممكن من رسائل البريد الإلكتروني التي تتطابق مع تاريخ/وقت معين، بدلاً من محاولة إرسالها باستخدام برنامج نصي تلقائي - على أمل أن يتم استلامها جميعًا في نفس الثانية .يبدو أنني سأحتاج إلى اتباع نهج آخر.

هل كانت مفيدة؟

المحلول

إضافة إلى @Lasse V.ملاحظة كارلسن، أعتقد أنه على الأرجح أن خادم SMTP يتجاوز ما تضعه في الرسالة بالرمز.بكل صدق، لماذا تحتاج حتى إلى جعل البريد الإلكتروني يبدو وكأنه تم إرساله في الماضي؟لا أستطيع التفكير في سبب واحد لا يكون غير أمين على الأقل أو خبيثًا في أسوأ الأحوال.

لذلك، سيكون من المنطقي بالنسبة لي أن يقوم الخادم بالكتابة فوق هذا الرأس إذا بدا مريبًا.لا أعرف إذا كان هذا هو ما يحدث بالفعل، لكنني أراهن أن @Lasse V.كارلسن على حق.

إذا كان الأمر كذلك، فسيكون الحل المحتمل هو تغيير التاريخ الموجود على خادم SMTP إلى تاريخ ما في الماضي (إذا كنت تتحكم في الخادم وتستطيع القيام بذلك).

ومع ذلك، فأنا أتساءل لماذا تريد حتى القيام بذلك.هل يمكنك توضيح ذلك؟

تمت الإضافة

@ لاسي V.كارلسن - أعتقد أنه يجب عليك نشر ملاحظتك كإجابة حتى تحصل على الفضل في ذلك.

نصائح أخرى

ويتم الكتابة فوق قيمة رأس في فئة رسالة عند إعداد رؤوس:

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

والسبب في أن أحاول (دون جدوى) تعيين هذه القيمة لأنني بحاجة للتعرف عليها لرأس المحسوب مختلفة. أعتقد "قريبة بما فيه الكفاية" سوف تضطر إلى القيام به.

ويمكنك إضافة رؤوس مخصصة لممتلكات رأس. ومع ذلك، وليس لرؤوس محفوظة قليلة بما في ذلك التسجيل. تنص وثائق تلك القيمة المخصصة لرؤوس يقتصر سيتم تجاهل أو الكتابة اقرأ المزيد <لأ href = "http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.headers٪28v=vs 0.110٪ 29.aspx "يختلط =" نوفولو "> هنا على MSDN

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top