go net/mail: 提供 Address.String() 替代方案,仅转换为 RFC 5322 且不编码为 RFC 2047

4xy9mtcn  于 4个月前  发布在  Go
关注(0)|答案(8)|浏览(55)

Address.String()方法有时在5322格式化后根据地址中的字符编码为RFC 2047。然而,一些服务(如Ala sparkpost传输API头字段)希望使用UTF8编码的RFC 5322格式的地址,而不是编码为RFC 2047。

我不确定[引用](
我不认为通过mime包可以轻松或安全地反转2047编码,因为代码有两种引用路径。
我认为你想要一个String()方法,基本上在这之前返回。)是否是rfc 2047的一部分。
我知道这对于使用API并不是必需的,但我在想是否有其他不需要RFC 2047编码的用例。如果有,那么可能值得添加一个额外的字符串/格式化函数。

sirbozc5

sirbozc51#

以下是SparkPost文档,要求不使用RFC 2047编码对header字段进行编码。我认为他们这样做是因为他们在header中允许使用模板/替换变量。
每个header值都期望在UTF-8字符集下,不使用RFC2047编码。
https://developers.sparkpost.com/api/transmissions/#header-header-notes

nfzehxib

nfzehxib3#

你能提供一些例子吗?
有任何建议的方法名吗?

e5nqia27

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,据我所知。

xbp102n0

xbp102n05#

Name听起来不错。请随意发送更改。

9wbgstp7

9wbgstp76#

Change https://golang.org/cl/139077 mentions this issue: net/mail: adds NameAddr() string method to return UTF8 RFC 5322 name-addr formatted addresses

nfeuvbwi

nfeuvbwi7#

RFC 6532 section 3.2明确允许这样做,因此我认为应该将其记录为这样;RFC 5322本身并未在地址中指定原始UTF-8。

xxb16uws

xxb16uws8#

关于这个的更新有什么消息吗?1.14版本中是否还有这个需求?我在CL上看到一些未解决的评论。

相关问题