跨邮件客户端的HTML邮件链接中的电子邮件分隔字符是不同的

问题描述:

我通过HTML中的mailto:链接预先填充电子邮件的'抄送'和'收件人'字段。当我用逗号分隔抄送字段中的电子邮件时,它可以在Gmail客户端中使用,但不能在Outlook中使用。当我将其转换为分号时,情况正好相反。跨邮件客户端的HTML邮件链接中的电子邮件分隔字符是不同的

我应该使用不同的分离字符吗?

逗号(,)是正确的字符,每RFC 6068规格:

to = addr-spec *("," addr-spec)

然而,如在this Stack Overflow answer指出的,一些用户可能具有的Outlook配置为使用半这将带来问题:

即使RFC明确建议一个逗号,Microsoft Outlook将使用区域设置中定义的“列表分隔符”。您的mailto链接可能无法正常工作,您的Windows + Outlook用户的系统配置了不同的列表分隔符(如分号)。 Outlook只会拒绝用逗号分割电子邮件地址。

我知道这不是你想听到的答案。您可以将Outlook配置为查找逗号而不是分号,但这是必须为每个用户完成的事情 - 而不是您可以在服务器端或从应用程序执行的操作。您可以编码检查Outlook是否被用作客户端,但除此之外,您的选择是有限的。

来源:

UPDATE:

正如@克里斯提到,RFC 5322还指定逗号作为接受者之间的 “官方” 分隔符:

to = "To:" address-list CRLF
cc = "Cc:" address-list CRLF
bcc = "Bcc:" [address-list/CFWS] CRLF
address-list = (address *("," address))/obs-addr-list

+1

它大概值得引用的https: //tools.ietf.org/html/rfc5322。 6068指定了主要处理“To”的href格式,但是对于仅仅是cc的cc而言,当使用时,cc字段是6068规范中的“hfield”,其基本上是指定标题的一种方式:“分别是[RFC5322]标头字段名称和值的编码。“所以CC字段的格式由5322指定。当然仍然使用逗号作为分隔符,所以结论仍然是一样的和准确的。 – Chris

+0

谢谢@Chris,我会加入。 – freginold