2010-09-03 36 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