⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc2045.txt

📁 穿越防火墙技术代码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
   corruption of the data, it is probably more sensible to use the   base64 encoding rather than the quoted-printable encoding.   NOTE: Several kinds of substrings cannot be generated according to   the encoding rules for the quoted-printable content-transfer-   encoding, and hence are formally illegal if they appear in the output   of a quoted-printable encoder. This note enumerates these cases and   suggests ways to handle such illegal substrings if any are   encountered in quoted-printable data that is to be decoded.    (1)   An "=" followed by two hexadecimal digits, one or both          of which are lowercase letters in "abcdef", is formally          illegal. A robust implementation might choose to          recognize them as the corresponding uppercase letters.    (2)   An "=" followed by a character that is neither a          hexadecimal digit (including "abcdef") nor the CR          character of a CRLF pair is illegal.  This case can be          the result of US-ASCII text having been included in a          quoted-printable part of a message without itself          having been subjected to quoted-printable encoding.  A          reasonable approach by a robust implementation might be          to include the "=" character and the following          character in the decoded data without any          transformation and, if possible, indicate to the user          that proper decoding was not possible at this point in          the data.    (3)   An "=" cannot be the ultimate or penultimate character          in an encoded object.  This could be handled as in case          (2) above.    (4)   Control characters other than TAB, or CR and LF as          parts of CRLF pairs, must not appear. The same is true          for octets with decimal values greater than 126.  If          found in incoming quoted-printable data by a decoder, a          robust implementation might exclude them from the          decoded data and warn the user that illegal characters          were discovered.    (5)   Encoded lines must not be longer than 76 characters,          not counting the trailing CRLF. If longer lines are          found in incoming, encoded data, a robust          implementation might nevertheless decode the lines, and          might report the erroneous encoding to the user.Freed & Borenstein          Standards Track                    [Page 22]RFC 2045                Internet Message Bodies            November 1996   WARNING TO IMPLEMENTORS:  If binary data is encoded in quoted-   printable, care must be taken to encode CR and LF characters as "=0D"   and "=0A", respectively.  In particular, a CRLF sequence in binary   data should be encoded as "=0D=0A".  Otherwise, if CRLF were   represented as a hard line break, it might be incorrectly decoded on   platforms with different line break conventions.   For formalists, the syntax of quoted-printable data is described by   the following grammar:     quoted-printable := qp-line *(CRLF qp-line)     qp-line := *(qp-segment transport-padding CRLF)                qp-part transport-padding     qp-part := qp-section                ; Maximum length of 76 characters     qp-segment := qp-section *(SPACE / TAB) "="                   ; Maximum length of 76 characters     qp-section := [*(ptext / SPACE / TAB) ptext]     ptext := hex-octet / safe-char     safe-char := <any octet with decimal value of 33 through                  60 inclusive, and 62 through 126>                  ; Characters not listed as "mail-safe" in                  ; RFC 2049 are also not recommended.     hex-octet := "=" 2(DIGIT / "A" / "B" / "C" / "D" / "E" / "F")                  ; Octet must be used for characters > 127, =,                  ; SPACEs or TABs at the ends of lines, and is                  ; recommended for any character not listed in                  ; RFC 2049 as "mail-safe".     transport-padding := *LWSP-char                          ; Composers MUST NOT generate                          ; non-zero length transport                          ; padding, but receivers MUST                          ; be able to handle padding                          ; added by message transports.   IMPORTANT:  The addition of LWSP between the elements shown in this   BNF is NOT allowed since this BNF does not specify a structured   header field.Freed & Borenstein          Standards Track                    [Page 23]RFC 2045                Internet Message Bodies            November 19966.8.  Base64 Content-Transfer-Encoding   The Base64 Content-Transfer-Encoding is designed to represent   arbitrary sequences of octets in a form that need not be humanly   readable.  The encoding and decoding algorithms are simple, but the   encoded data are consistently only about 33 percent larger than the   unencoded data.  This encoding is virtually identical to the one used   in Privacy Enhanced Mail (PEM) applications, as defined in RFC 1421.   A 65-character subset of US-ASCII is used, enabling 6 bits to be   represented per printable character. (The extra 65th character, "=",   is used to signify a special processing function.)   NOTE:  This subset has the important property that it is represented   identically in all versions of ISO 646, including US-ASCII, and all   characters in the subset are also represented identically in all   versions of EBCDIC. Other popular encodings, such as the encoding   used by the uuencode utility, Macintosh binhex 4.0 [RFC-1741], and   the base85 encoding specified as part of Level 2 PostScript, do not   share these properties, and thus do not fulfill the portability   requirements a binary transport encoding for mail must meet.   The encoding process represents 24-bit groups of input bits as output   strings of 4 encoded characters.  Proceeding from left to right, a   24-bit input group is formed by concatenating 3 8bit input groups.   These 24 bits are then treated as 4 concatenated 6-bit groups, each   of which is translated into a single digit in the base64 alphabet.   When encoding a bit stream via the base64 encoding, the bit stream   must be presumed to be ordered with the most-significant-bit first.   That is, the first bit in the stream will be the high-order bit in   the first 8bit byte, and the eighth bit will be the low-order bit in   the first 8bit byte, and so on.   Each 6-bit group is used as an index into an array of 64 printable   characters.  The character referenced by the index is placed in the   output string.  These characters, identified in Table 1, below, are   selected so as to be universally representable, and the set excludes   characters with particular significance to SMTP (e.g., ".", CR, LF)   and to the multipart boundary delimiters defined in RFC 2046 (e.g.,   "-").Freed & Borenstein          Standards Track                    [Page 24]RFC 2045                Internet Message Bodies            November 1996                    Table 1: The Base64 Alphabet     Value Encoding  Value Encoding  Value Encoding  Value Encoding         0 A            17 R            34 i            51 z         1 B            18 S            35 j            52 0         2 C            19 T            36 k            53 1         3 D            20 U            37 l            54 2         4 E            21 V            38 m            55 3         5 F            22 W            39 n            56 4         6 G            23 X            40 o            57 5         7 H            24 Y            41 p            58 6         8 I            25 Z            42 q            59 7         9 J            26 a            43 r            60 8        10 K            27 b            44 s            61 9        11 L            28 c            45 t            62 +        12 M            29 d            46 u            63 /        13 N            30 e            47 v        14 O            31 f            48 w         (pad) =        15 P            32 g            49 x        16 Q            33 h            50 y   The encoded output stream must be represented in lines of no more   than 76 characters each.  All line breaks or other characters not   found in Table 1 must be ignored by decoding software.  In base64   data, characters other than those in Table 1, line breaks, and other   white space probably indicate a transmission error, about which a   warning message or even a message rejection might be appropriate   under some circumstances.   Special processing is performed if fewer than 24 bits are available   at the end of the data being encoded.  A full encoding quantum is   always completed at the end of a body.  When fewer than 24 input bits   are available in an input group, zero bits are added (on the right)   to form an integral number of 6-bit groups.  Padding at the end of   the data is performed using the "=" character.  Since all base64   input is an integral number of octets, only the following cases can   arise: (1) the final quantum of encoding input is an integral   multiple of 24 bits; here, the final unit of encoded output will be   an integral multiple of 4 characters with no "=" padding, (2) the   final quantum of encoding input is exactly 8 bits; here, the final   unit of encoded output will be two characters followed by two "="   padding characters, or (3) the final quantum of encoding input is   exactly 16 bits; here, the final unit of encoded output will be three   characters followed by one "=" padding character.   Because it is used only for padding at the end of the data, the   occurrence of any "=" characters may be taken as evidence that the   end of the data has been reached (without truncation in transit).  NoFreed & Borenstein          Standards Track                    [Page 25]RFC 2045                Internet Message Bodies            November 1996   such assurance is possible, however, when the number of octets   transmitted was a multiple of three and no "=" characters are   present.   Any characters outside of the base64 alphabet are to be ignored in   base64-encoded data.   Care must be taken to use the proper octets for line breaks if base64   encoding is applied directly to text material that has not been   converted to canonical form.  In particular, text line breaks must be   converted into CRLF sequences prior to base64 encoding.  The   important thing to note is that this may be done directly by the   encoder rather than in a prior canonicalization step in some   implementations.   NOTE: There is no need to worry about quoting potential boundary   delimiters within base64-encoded bodies within multipart entities   because no hyphen characters are used in the base64 encoding.7.  Content-ID Header Field   In constructing a high-level user agent, it may be desirable to allow   one body to make reference to another.  Accordingly, bodies may be   labelled using the "Content-ID" header field, which is syntactically   identical to the "Message-ID" header field:     id := "Content-ID" ":" msg-id   Like the Message-ID values, Content-ID values must be generated to be   world-unique.   The Content-ID value may be used for uniquely identifying MIME   entities in several contexts, particularly for caching data   referenced by the message/external-body mechanism.  Although the   Content-ID header is generally optional, its use is MANDATORY in   implementations which generate data of the optional MIME media type   "message/external-body".  That is, each message/external-body entity   must have a Content-ID field to permit caching of such data.   It is also worth noting that the Content-ID value has special   semantics in the case of the multipart/alternative media type.  This   is explained in the section of RFC 2046 dealing with   multipart/alternative.Freed & Borenstein          Standards Track                    [Page 26]RFC 2045                Internet Message Bodies            November 19968.  Content-Description Header Field   The ability to associate some descriptive information with a given   body is often desirable.  For example, it may be useful to mark an   "image" body as "a picture of the Space Shuttle Endeavor."  Such text   may be placed in the Content-Description header field.  This header   field is always optional.     description := "Content-Description" ":" *text   The descript

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -