2010-09-03 121 views
2

我为我公司的发票写了一封自动电子邮件。事情都很好,很花哨,直到我遇到了几封未收到的电子邮件。SmtpClient发送错误的MessageIDs

经进一步检查我们的IT大师发现,通过邮件器发送的消息有不正确的邮件ID头。

Message-ID: <98bcd4e6-be30-4b22-8026-6047c8231b1f>

,他们应该是这个样子:

Message-ID: <[email protected]AIN.mycompany.com>

我环顾四周互联网与.NET的SqlClient中没有成功“无效邮件ID”。这是整个系统中的最后一个针脚,希望有一个答案。

代码:

MailMessage message = new MailMessage(); 

foreach(string recipient in msgRecipients) 
{ 
    message.To.Add(new MailAddress(recipient)); 
} 

message.From = new MailAddress(InvoiceEmailerConfig.Section.EmailCourier.FromEmail); 
message.ReplyTo = new MailAddress(InvoiceEmailerConfig.Section.EmailCourier.ReplyToEmail); 
message.Subject = messageHeading; 
message.Body = msgBody; 

SmtpClient mailer = new SmtpClient(SmtpServer, SmtpServerPort); 
mailer.DeliveryMethod = SmtpDeliveryMethod.Network; 
mailer.Credentials = new NetworkCredential(SmtpLogin, SmtpPassword); 
mailer.Send(message); 

回答

3

我有RHEL服务器上类似的问题,原来我的Sendmail的配置不正确。我认为你应该检查Exchange设置。

您还可以设置邮件ID明确,交易所将使用该消息ID发送电子邮件。

MailMessage message = new MailMessage(); 
message.Headers.Add("Message-ID", "MyMessageID"); 
+0

您是否知道对消息ID字段有任何规定?它是否必须在交换服务器中引用某些东西,或者我可以随机生成一些@ mydomain.com? – Aren 2010-09-03 18:44:25

+0

我在我们的某个产品中为电子邮件门户手动设置标题,这有助于我协调答复。您可以手动将message-id标头设置为一个有效的message-id,如Alex所示,它应该可以正常工作。 – 2010-09-03 19:07:20

+0

@Wil P:那么你刚刚生成了一个适当长度的随机HEX代码? – Aren 2010-09-03 19:16:41