【发布时间】:2014-02-25 22:46:51
【问题描述】:
我试图通过 VB.net 中的 MailMessage.Headers.Set 调用来完成此操作。见下文:
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 中收到电子邮件时,所有日期都是 2009 年,而不是 1999 年。就在 Outlook 界面和标题中,我通过上下文中的“选项”项访问该电子邮件的菜单。
我做错了什么?我感觉我错过了一些明显的东西......
明确一点:我不是出于恶意这样做。我正在开发一个电子邮件集成组件,该组件利用 UID 和“最后处理”日期来定位要集成的第一封新电子邮件。我想测试多封电子邮件具有完全相同的日期/时间的情况——因为电子邮件集成模块应该完美地处理这些情况。如果我可以简单地以这种方式伪造日期,我可以发送尽可能多的与特定日期/时间匹配的电子邮件,而不是尝试使用自动脚本发送它们——希望它们都能在同一秒内收到.不过,看来我需要采取另一种方法。
【问题讨论】:
-
它可能被有问题的服务器否决了,它记录了他们收到消息的时间,而不是消息说它被发送的时间。
-
我认为嗅探网络会有所帮助。或者至少在您的 SMTP 服务器中进行额外的日志记录
-
@Lasse V. Karlsen 正如大卫斯特拉顿所说,您应该添加该评论作为答案。这说得通。我得想个更好的办法。
-
+1 既然我明白了你的理由,我认为这是一个更好的问题。