我在电子邮件地址遇到过一些带有编码字的电子邮件,例如:而不是
abc <abc@example.com>
它包含:
abc <=?ISO8859-1?B?YWJjQGV4YW1wbGUuY29t=?=>
我发现许多电子邮件程序都存在问题,但有些问题让我觉得它可能是某些RFC的一部分,尽管我找不到它。
此外,如果电子邮件地址标题的格式为:
From: =?ISO8859-1?B?YWJjQGV4YW1wbGUuY29t=?=
它将由许多程序解码,但不会由Indy解码。在大多数程序中发生的事情是,他们认为这部分名称来自于&#34;名称&#34;部分和解码它,但他们留下编码的电子邮件地址,导致:
Name = abc@example.com
Email = =?ISO8859-1?B?YWJjQGV4YW1wbGUuY29t=?=
这使得它至少部分解码得很好。
然而,在Indy中,这导致:
Name = **blank**
Email = =?ISO8859-1?B?YWJjQGV4YW1wbGUuY29t=?=
这应该在Indy中得到支持(或者反过来因此它将base64部分视为&#34;名称&#34;部分,而不是&#34;电子邮件&#34;部分)或者它是不正确格式的电子邮件地址?或者是解释的问题应该被解释为第一部分,因为电子邮件确实看起来像From: abc@example.com
而没有<>
个字符。
答案 0 :(得分:3)
abc&lt; =?ISO8859-1?B?YWJjQGV4YW1wbGUuY29t =?=&gt;
Indy不支持这样的编码地址,符合RFC 2047 Section 5 Use of encoded-words in message headers:
编码字&#39;可能会根据以下规则出现在邮件标题或正文部分标题中:
(1)编码字&#39;可以替换“&text”&#39;任何主题或注释标题字段中的标记(由RFC 822定义),任何扩展消息标题字段,或字段正文定义为&#39; * text&#39;的任何MIME正文部分字段。一个&#39;编码字&#39;也可能出现在任何用户定义的(&#34; X - &#34;)消息或正文部分标题字段中。
普通ASCII文本和&#39;编码字可以一起出现在同一个标题字段中。但是,一个&#39;编码字&#39;出现在标题字段中,定义为&#39; * text&#39;必须与任何相邻的编码字分开。或者&#39; text&#39;通过线性白色空间&#39;。
(2)编码字&#39;可能出现在评论中由&#34;(&#34;和&#34;)&#34;分隔,即在任何地方&#39; ctext&#39;被允许。更准确地说,RFC 822 ABNF定义为&#39;评论&#39;修改如下:
评论=&#34;(&#34; *(ctext / quoted-pair / comment / encoded-word)&#34;)&#34;
A&#34; Q&#34; - 编码&#39;编码字&#39;出现在“评论”中不得包含字符&#34;(&#34;,&#34;)&#34;或&#34; &#39;编码字&#39;出现在评论中的#39;必须与任何相邻的编码字分开。或者&#39; ctext&#39;通过线性白色空间&#39;。
重要的是要注意,评论仅在内部识别&#34;结构化&#34;野外机构。在其主体被定义为&#39; * text&#39;,&#34;(&#34;和&#34;)&#34;被视为普通字符而不是注释分隔符,本节规则(1)适用。 (参见RFC 822,第3.1.2和3.1.3节)
(3)取代“&#39;字”&#39;短语中的实体,例如,在“发件人”,“收件人”或“抄送”标题中的地址之前的实体。 ABNF定义的短语&#39;从RFC 822变成:
词组= 1 *(编码词/词)
在这种情况下,可以在&#34; Q&#34; - 编码&#39;编码字&#39;中使用的字符集。仅限于:。一个&#39;编码字&#39;出现在短语中的短语&#39;必须与任何相邻的单词&#39;,&#39; text&#39;或者&#39;特别&#39;通过线性白色空间&#39;。
这些是“编码字”的唯一位置。可能会出现。特别是:
一个&#39;编码字&#39;不得出现在“地址规范”
的任何部分。- 中
编码字&#39;不得出现在&#39;引用字符串&#39;。
编码字&#39;不得在收到的标题字段中使用。
编码字&#39;绝不能用在MIME的参数中 Content-Type或Content-Disposition字段,或任何结构化字段 除了评论之外的字段正文或者&#39;短语&#39;。
Indy(和RFC 2047)确实支持编码名称:
From: =?ISO8859-1?B?YWJj?= <abc@example.com>
来自:=?ISO8859-1?B?YWJjQGV4YW1wbGUuY29t =?=
在这种情况下,Indy会将此解释为没有名称的电子邮件地址。如上所述,不允许编码地址。