使用 html Mailto 向多个收件人发送电子邮件:不起作用

Posted

技术标签:

【中文标题】使用 html Mailto 向多个收件人发送电子邮件:不起作用【英文标题】:Emailing to multiple recipients with html Mailto: not working 【发布时间】:2012-03-05 21:47:39 【问题描述】:

我们有 400 到 500 封电子邮件,当我们将它们连接起来并将它们放入 mailto 时:它不起作用,浏览器会自动在电子邮件之间添加“...”并且单击链接不起作用。

<a href='mailto:one@email.com,two@email.com....400@email.com'>open emails</a>

ma​​ilto: 属性是否有最大长度?还有其他方法可以打开多封电子邮件吗?

【问题讨论】:

使用 mailto: 一次发送到这么多地址似乎很奇怪。您是否有理由不只使用后端邮件脚本来完成此操作? 你到底为什么需要一个mailto:有数百个地址???这绝对不是 mailto 的设计目的。 @adelphus 我认为这里有一个用例,您可以在几分钟内找到问题的解决方案,而设置服务器端解决方案则需要更长的时间。 为了清楚起见,一个示例用例是单个管理员需要向 100 多个收件人发送快速电子邮件。 【参考方案1】:

这是一种不好的做法,几乎不可能。尝试重新考虑您的脚本。

RFC 1783 (URLs) 说 mailto: URL 采用 RFC822 地址 规格。 RFC822 被 RFC2822 淘汰;和 RFC2822 说 地址规范可以包括一个邮箱列表,它是一个 逗号分隔的邮箱列表。我的结论是你正在尝试 允许做。

然而,UA 对“mailto:”的支持充其量是不完整的;建议 是完全避免它,或者没有限制自己 指定一个地址。

特别是尝试包含一个主题绝对不会 在所有 UA 中工作。另请注意

最好使用formmail 脚本。这会给你 你似乎想要的那种多功能性,同时完全回避 mailto: URL 方案,它暗示的浏览器支持不足, 以及第一个是否配置了任何电子邮件UA的问题 地方。

学分: http://bytes.com/topic/html-css/answers/496355-multiple-addresses-mailto

【讨论】:

问候,您的评论很有用,但我也发现此页面 topliners.eloqua.com/community/do_it/blog/2013/11/08/… 假装相反。【参考方案2】:

最大长度 2048(如果您使用的是 Internet Explorer)。我想你可能会重新考虑你的解决方案。

参考here

【讨论】:

【参考方案3】:

您应该创建一个分发列表并将所有这些电子邮件添加到此列表中。 http://support.microsoft.com/kb/284292

【讨论】:

【参考方案4】:

只是为了添加更多细节...... RFC 1738 实际上所说的是

mailto URL 采用以下形式:

    mailto:<rfc822-addr-spec>

哪里是(一个的编码)addr-spec,如 在 RFC 822 [6] 中指定。

虽然 RFC2822 可能包含 RFC822,但 RFC2822 并没有将 addr-spec 规范(第 3.4.1 节)更改为

 addr-spec   =  local-part "@" domain

更具体地说,RFC 1738 没有说 URL 采用 RFC822 地址规范的形式,而是直接说明了 addr-spec 的编码。

确实,在 RFC2822 第 3.4 节地址规范中,组的定义是从 RFC822 中修改的,

 group       =  phrase ":" [#mailbox] ";"

 mailbox     =  addr-spec                    ; simple address
             /  phrase route-addr            ; name & addr-spec

 group           =       display-name ":" [mailbox-list / CFWS] ";"

 display-name    =       phrase

 mailbox-list    =       (mailbox *("," mailbox)) / obs-mbox-list

 mailbox         =       name-addr / addr-spec

这确实允许多个 addr-specs,但同样,addr-spec 本身的定义保持不变。

然后,我会得出结论,虽然它可能有效,但它不受官方支持。

【讨论】:

这是最新的规范:tools.ietf.org/html/rfc6068#section-2【参考方案5】:

根据您的用例,可能可以像这样从浏览器发送电子邮件,但这取决于用户是否正确设置了 mailto 的协议处理程序。

对于有限数量的用户,例如一些站点管理员这可能是一个很好的解决方案。因为您可以控制客户端计算机的设置并确保其正常工作。

所以如果你用这个链接创建了一个页面

mailto:me@example.com?bcc=someone_else@example.com

mailto:someone@example.com?subject=This%20is%20the%20subject&bcc=someone_else@example.com&body=This%20is%20the%20body

剪切并粘贴到地址栏以测试这是否适用于您的机器。

我不建议将此作为任何优秀软件产品的强大解决方案,您应该使用基于服务器的解决方案。但是,如果您需要帮助内部系统或个人网站,那么这将花费几分钟时间,并且比基于服务器的解决方案造成的麻烦更少。

发送邮件的方式有很多很多,我觉得这个简单、快捷、灵活,但并不是在所有机器上都有效,可能只有70%???

最后一件事,通常如果您要向多个收件人发送电子邮件,请将其发送给您自己并使用密件抄送字段 (bcc),这意味着您不会与所有其他客户共享您客户的电子邮件地址。

tl;dr

总而言之,如果您可以对每台将使用电子邮件链接的客户端计算机进行测试/故障排除,那么请考虑使用复杂的 mailto 链接。否则,请使用服务器端电子邮件。

并使用密件抄送字段来发送大量电子邮件。

【讨论】:

【参考方案6】:

如果您需要发送多个(但不是数百个)电子邮件,则正确的表单不应包含空格,而应包含分号(尤其是如果用户可能会使用 Outlook)。

<a href='mailto:one@email.com;two@email.com;three@email.com'>Contact us</a>

如果您想自动包含主题行,请添加“?subject=This is the subject”

<a href='mailto:one@email.com;two@email.com;three@email.com?subject=Webpage contact'>Contact us</a>

【讨论】:

这在 gmail 中似乎不起作用,它需要用逗号分隔的地址。 Outlook 需要;,而其他一切都需要,。规范是,...所以outlook 已经坏了,而且多年来一直没有修复,而且你无法知道用户正在使用什么客户端,所以这很酷。 Gmail 似乎两者都接受。【参考方案7】:

我会建议这么多人使用 DG,但电子邮件地址不是用逗号分隔,而是用分号分隔。我读过一些人在他们的 mailto 行中使用分号时遇到问题。尝试将分号编码为 %3B,就像将空格编码为 %20。

例如,

mailto:someone@somewhere.com%3Banother@thatplace.com?subject=THIS%20IS%20AWESOME

【讨论】:

【参考方案8】:

改用 bcc= 查询。它支持多个以逗号分隔的电子邮件,并且收件人不会看到其他收件人,而主收件人会显示所有其他收件人:地址(并且还会向该列表中的每个人发送回复。)

【讨论】:

【参考方案9】:
mailto:one@example.com?to=two@example.com&to=three@example.com&cc=...

我在官方文档中找不到“收件人”字段,但它似乎比使用逗号或分号等分隔符更适用于电子邮件客户端。

它可以在 Outlook 手机、gmail 手机、苹果邮件和 Thunderbird 上正常工作。 在 Windows 10 内置邮件应用程序中,它只添加了最后一个“收件人”地址作为主要收件人,其他地址可能被覆盖。无论如何,这是对我们之前遇到“无效电子邮件地址”错误的用户的升级。

【讨论】:

以上是关于使用 html Mailto 向多个收件人发送电子邮件:不起作用的主要内容,如果未能解决你的问题,请参考以下文章

发送邮件mailto的使用

如何使用 python smtplib 向多个收件人发送电子邮件?

使用 Mailkit 或 mimekit 向多个收件人发送一封电子邮件

如何使用存储在 Excel 中的地址向多个收件人发送电子邮件?

使用 Python smtplib 从 .txt 文件向多个收件人发送电子邮件

PHP表单向多个收件人发送电子邮件