Address.String()
方法有时在5322格式化后根据地址中的字符编码为RFC 2047。然而,一些服务(如Ala sparkpost传输API头字段)希望使用UTF8编码的RFC 5322格式的地址,而不是编码为RFC 2047。
我不确定[引用](
我不认为通过mime包可以轻松或安全地反转2047编码,因为代码有两种引用路径。
我认为你想要一个String()
方法,基本上在这之前返回。)是否是rfc 2047的一部分。
我知道这对于使用API并不是必需的,但我在想是否有其他不需要RFC 2047编码的用例。如果有,那么可能值得添加一个额外的字符串/格式化函数。
8条答案
按热度按时间sirbozc51#
以下是SparkPost文档,要求不使用RFC 2047编码对header字段进行编码。我认为他们这样做是因为他们在header中允许使用模板/替换变量。
每个header值都期望在UTF-8字符集下,不使用RFC2047编码。
https://developers.sparkpost.com/api/transmissions/#header-header-notes
piv4azn72#
/cc @bradfitz
nfzehxib3#
你能提供一些例子吗?
有任何建议的方法名吗?
e5nqia274#
我刚刚查看了rfc(5322),它将这种语法称为
name-addr
name-addr = [display-name] angle-addr
Section 3.4 https://tools.ietf.org/html/rfc5322#section-3
也许
func (*Address) NameAddr() string
是正确的,但我非常确定go语言不支持在除了时间格式化变量之外的事物名称中使用rfc编号,而且我认为没有竞争标准,因为rfc 2044只是一个编码而不是一个格式化rfc,据我所知。xbp102n05#
Name听起来不错。请随意发送更改。
9wbgstp76#
Change https://golang.org/cl/139077 mentions this issue:
net/mail: adds
NameAddr() stringmethod to return UTF8 RFC 5322
name-addrformatted addresses
nfeuvbwi7#
RFC 6532 section 3.2明确允许这样做,因此我认为应该将其记录为这样;RFC 5322本身并未在地址中指定原始UTF-8。
xxb16uws8#
关于这个的更新有什么消息吗?1.14版本中是否还有这个需求?我在CL上看到一些未解决的评论。