【问题标题】:Emailing to multiple recipients with html Mailto: not working使用 html Mailto 向多个收件人发送电子邮件:不起作用
【发布时间】: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 多个收件人发送快速电子邮件。

标签: javascript jquery asp.net html


【解决方案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

【讨论】:

【解决方案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 本身的定义保持不变。

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

      【讨论】:

      【解决方案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 内置邮件应用程序中,它只添加了最后一个“收件人”地址作为主要收件人,其他地址可能被覆盖。无论如何,这是对我们之前遇到“无效电子邮件地址”错误的用户的升级。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-07-08
              • 2014-06-22
              • 2022-01-02
              • 1970-01-01
              • 2012-05-18
              • 2020-05-02
              相关资源
              最近更新 更多