【问题标题】:What is wrong with WebMail.Send when it comes to multiple recipients?当涉及多个收件人时,WebMail.Send 有什么问题?
【发布时间】:2013-08-29 16:30:33
【问题描述】:

我们之前在 StackOverflow 上看到过一些关于 System.Web.Helpers.Webmail.Send 的类似问题,但我没有看到对发生的事情的正确解释。

关于to: 参数,the documentation 表示:

收件人的电子邮件地址。使用分号 (;) 分隔多个收件人。

我看到回答说"use a comma because the docs are wrong",或“使用分号”,或"maybe it's an environment issue"

代码

WebMail.Send(
    to: "joe.bloggs@mail.com,jane.bloggs@mail.com",
    from: "no-reply@company.com",
    subject: "Some Automated Email",
    body: "<strong>Lorem Ipsum</strong>",
    isBodyHtml: true
);

我尝试了几种情况:

joe.bloggs@mail.com;jane.bloggs@mail.com

未收到电子邮件:An invalid character was found in the mail header: ';'.

joe.bloggs@mail.com; jane.bloggs@mail.com

只有第一个收件人会收到电子邮件

joe.bloggs@mail.com,jane.bloggs@mail.com

都收到了邮件

joe.bloggs@mail.com, jane.bloggs@mail.com

都收到了邮件

joe.bloggs@mail.com, non-existant@mail.com

第一次收到邮件,但未发现异常:Mailbox unavailable. The server response was: 5.7.1 Unable to relay

non-existant@mail.com, joe.bloggs@mail.com

未收到电子邮件:An invalid character was found in the mail header: ','.

任何人都可以对此有所了解吗?实际上,我在不同的服务器上遇到了更多奇怪的行为;我使用 Exchange 进行上述测试,但实际上在 hMailServer 上遇到了不同的行为,其中joe.bloggs@mail.com,jane.bloggs@mail.com 导致静默失败,没有服务器错误,并且 hMailServer 日志中没有外发邮件。在带有 hMailServer 的系统上,我只成功使用了一个地址。

【问题讨论】:

    标签: c# .net email webmail


    【解决方案1】:

    这可能与您连接的继电器种类以及它们接受的方法种类有关。分隔符不仅对每个特定的邮件服务器很重要,而且电子邮件地址也很重要(因为不同的中继将被配置为接受某些电子邮件,并且会为错误的电子邮件抛出各种错误代码,这又会引发各种异常)。

    System.Net.Mail 命名空间有一个 MailMessage 对象,其中包含 To、CC 和 Bcc 的 MailAddressCollection 对象,您只需为每个收件人调用 Add() 即可。

    我有一个library 发送使用它的邮件(没有中继)(所有内容都转至密件抄送),您可以查看那里的代码。如果您碰巧使用该库,请确保您的 IP 地址保持良好的信誉,并确保您的 DNS 记录的设置方式与您作为中继时的设置方式相同(PTR 和 A 记录所有设置)。

    【讨论】:

      【解决方案2】:

      据我了解,文档中的错误是可能的情况。我没有这个程序集,所以我无法在 ILSpy 中确认它,但显然助手类只是使用System.Net.Mail。继四参数重载之后我就到了这个内部方法。

      internal Message(string from, string to) : this()
      {
          //...
          this.to = new MailAddressCollection
          {
             to
          }
      }
      

      因此,它只是创建了一个新的MailAddressCollection,它需要一个comma 分隔符。 to 字符串从未替换或操作分号(除非这是在 Helper 类中完成的,但事实并非如此)。

      【讨论】:

        猜你喜欢
        • 2023-03-25
        • 1970-01-01
        • 2014-09-21
        • 1970-01-01
        • 2013-04-09
        • 1970-01-01
        • 2020-05-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多