WebMail有什么问题.当它涉及到多个收件人时发送

本文关键字:收件人 什么 问题 WebMail | 更新日期: 2023-09-27 18:29:28

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

关于to:参数,文档中写道:

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

我看到的答案是"因为文档错误而使用逗号"、"使用分号"或"可能是环境问题"。

代码

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的系统上,我只成功地使用了一个地址。

WebMail有什么问题.当它涉及到多个收件人时发送

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

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

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

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

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

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