我通過HTML中的mailto:
鏈接預先填充電子郵件的'抄送'和'收件人'字段。當我用逗號分隔抄送字段中的電子郵件時,它可以在Gmail客戶端中使用,但不能在Outlook中使用。當我將其轉換爲分號時,情況正好相反。跨郵件客戶端的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
它大概值得引用的https: //tools.ietf.org/html/rfc5322。 6068指定了主要處理「To」的href格式,但是對於僅僅是cc的cc而言,當使用時,cc字段是6068規範中的「hfield」,其基本上是指定標題的一種方式:「和分別是[RFC5322]標頭字段名稱和值的編碼。「所以CC字段的格式由5322指定。當然仍然使用逗號作爲分隔符,所以結論仍然是一樣的和準確的。 –
Chris
謝謝@Chris,我會加入。 – freginold