如何将值分配给MailMessage ReplyTo属性?

我想为.NET MailMessage设置ReplyTo值。

MailMessage.ReplyTo属性:

这种types的ReplyTo已经过时了。 请使用ReplyToList代替它可以接受多个地址。

MailMessage.ReplyToList属性:

获取或设置要回复邮件的地址列表。

但是,ReplyToList是ReadOnly。

我试过使用这样的MailMessage.Headers属性:

mail.Headers.Add("Reply-To", "johndoe@example.com"); 

如下所述: System.Web.Mail,OH MY!

但是,这似乎并不奏效。

如何设置MailMessage的ReadOnly属性ReplyToList的值?

ReplyToList是MailAddressCollection的一个实例,它公开了Add方法。

要添加一个新的地址,你可以简单地将地址作为string传递

  message.ReplyToList.Add("john.doe@example.com"); 

我喜欢数组init的语法,它会为你调用Add()。

 var msg = new MailMessage("noreply@example.com", mailTo) { Subject = "my important message", Body = this.MessageBody, ReplyToList = { mailTo } // array init syntax calls Add() }; mailClient.Send(msg); 

你不能说

 message.ReplyToList = new MailAddressCollection(); 

创build一个新的集合。 但是,添加到现有的集合是你想要做的。

 message.ReplyToList.Add(new MailAddress("foo@bar.net")); 

我的答案与已经接受的答案不同。 不过,我觉得需要提供。

 var fromEmail = new MailAddress("foobar@example.com", "Foo Bar"); var replyEmail = new MailAddress("foo@example.com", "Foo Example"); var msgEmail = new MailMessage { From = fromEmail }; msgEmail.ReplyToList.Add( replyEmail ); 

我使用了MailMessage.Sender属性。

 mail.Sender = new Mail.MailAddress("system@example.com"); mail.From = new Mail.MailAddress("johndoe@example.com", "John Doe"); 

更多信息: MailMessage,发件人和来自属性之间的区别

您需要通过Add方法将ReplyTo Addresses列表添加到ReplyToList:

  mail.Sender = new MailAddress(from, displayName); mail.From = new MailAddress(from, displayName); mail.ReplyToList.Add("replyToAddress@host.com");