我有一些意想不到的处理RFC2047Exim 上的“发件人”标题。
(实际地址已被更改,原始显示名称包含非 ASCII 字符)
对于此“发件人”标题:
From: =?iso-8859-1?Q?Doe=2C_John?= <[email protected]>
解码为
From: Doe, John <[email protected]>
预期的等效格式可能是:
From: "Doe, John" <[email protected]>
Exim${addresses:$h_from:}
用进行填充,这似乎意味着 Exim 先解码字符串,然后解释它。Doe:[email protected]
这是错误吗?邮件服务器是否应将地址字段中的 RFC2047 编码字符串作为带引号的字符串处理?(这是有道理的,因为从支持 RFC2047 和不支持 RFC2047 的邮件服务器来看,对标头的解释是相同的,而要求编码字符串中的引号允许不同的邮件软件以不同的方式进行解释)To: [email protected]=2C_John?= <[email protected]>
在线RFC2047解码器对于解码头部很有用
答案1
使用${addresses:$rh_from:}
而不是${addresses:$h_from:}
解决问题。
这使得 Exim 从非解码版本而不是解码版本中提取地址。(${addresses:<string>}
解码当时的字符串值,这意味着如果将解码的标题$h_from
作为输入,则逗号会被解释,从而导致出现问题)