0

我需要用 C++ 编写一些东西来发送符合 RFC-2822 标准的电子邮件。

但我不太确定的一件事是引用的字符串及其转义机制。官方文档让我很困惑。

https://datatracker.ietf.org/doc/html/rfc2822#section-3.2.4 https://datatracker.ietf.org/doc/html/rfc2822#section-3.2.5

特别是以下概念/问题:

  1. 什么是原子?

  2. 看起来下面4行是OR条件,%dxx是ASCII码和“;”后面的字 是解释/备注。如果是这种情况,则 %d33 + %d35-91 + %d93-126 已经定义了引用字符串中允许的字符范围而无需转义。为什么我们仍然需要第一行“NO-WS-CTL / ; Non white space controls”?另外,对于第二行,“%d33 / ; US-ASCII 的其余部分”,%d33 已经定义了单个字符,为什么它仍然提到“US-ASCII 的其余部分”?

     qtext           =       NO-WS-CTL /     ; Non white space controls
    
                             %d33 /          ; The rest of the US-ASCII
                             %d35-91 /       ;  characters not including "\"
                             %d93-126        ;  or the quote character
    
  3. 什么是“引用对”?

     qcontent        =       qtext / quoted-pair
    
  4. 如何解释这个定义?

     quoted-string   =       [CFWS]
                             DQUOTE *([FWS] qcontent) [FWS] DQUOTE
                             [CFWS]
    
  5. 我找不到文档中明确提到的任何转义序列。该标准是否没有转义序列,并且 qtext 中未定义的字符根本不允许?

  6. 如果真的有转义机制,它是什么,是否有任何库可用于将普通字符串解析为 RFC2822 引用的字符串

  7. 文档的格式让我很困惑,有没有更好的文档建议?

抱歉,我有这么多问题,感谢您的帮助。

4

0 回答 0