2011-01-11 2 views
35

MIMEを書き込むときに、メッセージのさまざまな部分を特定の境界で区切ります。私はこの境界を説明する任意のドキュメントを見つけるためにいくつかの理由で失敗したが、ここで私は例から集められたものです:MIME境界にはどのような規則が適用されますか?

  1. 境界iは、文字と数字の任意の文字列を指定できます。 e。 "d29a0c638b540b23e9a29a3a9aebc900aeeb6a82"。

  2. 境界を生成するルールはありません。あなたの愛する人の名前をmd5sumするだけで、ここに行くことができます。境界があります。

  3. あなたはHTTPを介してMIMEを送信する場合、あなたは、ヘッダー「Content-Typeの」、あなたが行うことを指定すると、あなたの境界線を追加する必要があり、ヘッダの内容は、次のようになります。

    マルチパート/フォームデータを;

    --d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

しかし、これらの規則(およびthis役立つ次のように、 " - " あなたのメッセージの本文に境界= d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

  • は、境界の前に記述する必要があります答え)サーバが受け付けるPOSTクエリを生成できませんでした。何か不足していますか?何か間違ったことがありましたか?

  • 答えて

    57

    syntax of a boundaryは次のとおりです。

    boundary := 0*69<bchars> bcharsnospace 
    bchars := bcharsnospace/" " 
    bcharsnospace := DIGIT/ALPHA/"'"/"("/")"/
            "+"/"_"/","/"-"/"."/
            "/"/":"/"="/"?" 
    

    そしてbody of a multipart entityは、構文(だけ重要な部分を)持っている:

    multipart-body := [preamble CRLF] 
            dash-boundary transport-padding CRLF 
            body-part *encapsulation 
            close-delimiter transport-padding 
            [CRLF epilogue] 
    dash-boundary := "--" boundary 
    encapsulation := delimiter transport-padding 
            CRLF body-part 
    delimiter := CRLF dash-boundary 
    close-delimiter := delimiter "--" 
    

    先行--はすべてのために必須です境界で使用されるメッセージと末尾の--は、閉じる境界線(の区切り記号)には必須です。だから、boundaryとして境界と3ボディパーツとマルチボディは次のようになります。

    --boundary 
    1. body-part 
    --boundary 
    2. body-part 
    --boundary 
    3. body-part 
    --boundary-- 
    
    +1

    をも –

    +2

    我々はクロージング境界の後にCRLFを必要としない* *輸送パディングを説明してください? – johnlowvale

    +1

    @johnlowvale '[CRLFエピローグ]'ですので、[bnf文法](https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form)に従ってCRLFで終わることはオプションです。 **変形**セクションを参照してください。 –

    関連する問題