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的系统上,我只成功地使用了一个地址。
这可能与您连接的各种继电器以及它们接受的各种方法有关。分隔符字符不仅对每个特定的邮件服务器都很重要,电子邮件地址也很重要(因为不同的中继将被配置为接受某些电子邮件,并会为坏电子邮件返回各种错误代码,这反过来又会引发各种异常)。
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
类中完成的,但事实并非如此)。