【问题标题】:How do I assign a value to a MailMessage ReplyTo property?如何为 MailMessage ReplyTo 属性赋值?
【发布时间】:2011-02-15 01:36:13
【问题描述】:

我想为 .NET MailMessage 设置 ReplyTo 值。

MailMessage.ReplyTo属性:

ReplyTo 对于此类型已过时。 请改用ReplyToList 可以接受多个地址。

MailMessage.ReplyToList属性:

获取或设置地址列表 回复邮件消息。

但是,ReplyToList 是只读的。

我尝试像这样使用MailMessage.Headers 属性:

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

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

但是,这似乎不起作用。

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

【问题讨论】:

标签: .net email


【解决方案1】:

ReplyToListMailAddressCollection 的一个实例,它公开了 Add 方法。

要添加新地址,您只需将地址作为字符串传递

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

【讨论】:

  • 呸!那只是钝。为什么不允许分配MailAddress??的集合?
  • 注意:如有必要,您可以传递一个包含逗号分隔的电子邮件地址列表的字符串;)
【解决方案2】:

我喜欢数组初始化语法,它会为你调用 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);

【讨论】:

    【解决方案3】:

    你不能说

    message.ReplyToList = new MailAddressCollection();
    

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

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

    【讨论】:

      【解决方案4】:

      我的答案与已经给出的公认答案没有什么不同。但是,我觉得需要提供。

      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 );
      

      【讨论】:

      • 执行此操作更简单:msgEmail.ReplyToList.Add("foobar@example.com, foo@example.com") ;
      【解决方案5】:

      我改用了MailMessage.Sender 属性。

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

      更多信息:MailMessage, difference between Sender and From properties

      【讨论】:

        【解决方案6】:

        您需要通过 Add 方法将回复地址列表添加到回复列表:

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

        【讨论】:

          【解决方案7】:
          MailMessage.ReplyToList.Add("johndoe@example.com, janedoe@example.com, xxxx@yyyy.com");
          

          参考。 https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.mailaddresscollection.add?redirectedfrom=MSDN&view=netframework-4.8#overloads


          我希望使用上述方法也可以选择包含“友好名称”,可能使用以下格式: Jon Doe <jondoe@example.com>

          参考: https://askleo.com/why_are_email_addresses_sometimes_in_anglebrackets/, https://help.returnpath.com/hc/en-us/articles/220563147-What-is-a-Friendly-From-name-and-address-, https://wordtothewise.com/2014/12/friendly-email-addresses/.

          【讨论】:

            猜你喜欢
            • 2021-11-13
            • 1970-01-01
            • 2013-02-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-05-24
            相关资源
            最近更新 更多