2012-03-21 27 views
4

我正在使用.NET實現郵件列表。如this answer所述,我需要發送一封電子郵件,信封的收件人與收件人中的收件人不同。如何在C#中實現這一點? System.Net.Mail中的SmtpClient和MailMessage類似乎不允許這樣做。在.NET中實現郵件列表

我想:

 message.To.Add("[email protected]"); 
     message.Headers["Envelope-to"] = "[email protected]"; 

但郵件不會發送到它是什麼在信封指定。

有什麼建議嗎?

回答

3

添加一個地址到Envelope-To不將其加入To

可以使用MailMessage.Bcc屬性。地址添加只會出現在Envelope-To,而不是在郵件的To

message.Bcc.Add("[email protected]"); 

添加一個地址到To不將其加入Envelope-To

在這裏,我敢肯定你運氣不好。我用ILSpy查看了System.Net.Mail命名空間,看起來這是不可能的。郵件的To標題創建於MailMessage的To屬性之外(請參閱Message.PrepareHeaders),並使用相同的屬性填充郵件的Envelope-To(連同CcBcc屬性,請參閱SmtpClient.Send) 。手動設置Headers["To"]不會有幫助,因爲此值將被To屬性的內容覆蓋(請參閱Message.PrepareHeaders)。

所以,[email protected]得到消息的副本。根據您的SMTP服務器的配置,這可能會導致郵件循環。

+0

謝謝你的詳細解答。有沒有第三方的smtp客戶端可以實現這一目標? – nakhli 2012-03-22 09:00:05

+0

@ChakerNakhli:不幸的是,我不知道任何。如果您沒有找到Google,那麼可以開始一個新的問題。 – Heinzi 2012-03-22 09:48:07

+0

Yuck。絕對不是期望的。按照[建議](http://stackoverflow.com/a/165403/201725)建議使用其他庫,但不幸的是,這個建議並不是免費的。這很奇怪,沒有免費的圖書館。 – 2013-03-13 15:36:22