1

Mailkit ライブラリを使用して電子メールを受信して​​きましたが、これまでのところ素晴らしいものです。ただし、Mac のメール アプリを介して送信されるメッセージに問題があることがわかりました。たとえば、pdf の添付ファイルと html 形式の本文を付けて送信したメッセージは、(IMailFolder.GetMessage を介して) 添付ファイルのないオブジェクトとして受信され、HtmlBody のみが null です (TextBody のみが受信されます)。

このメールのソースコード (個人情報ヘッダーなし) を Web メール クライアントから添付しています (メッセージはそこに表示されます)。

Content-Type: multipart/alternative; boundary="Apple-Mail=_CA0BDF81-AE2A-4E1A-9D37-8B30B5220C77"
Subject: Test
Date: Thu, 11 Jun 2015 07:00:29 -0700
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
X-Mailer: Apple Mail (2.1990.1)


--Apple-Mail=_CA0BDF81-AE2A-4E1A-9D37-8B30B5220C77
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
    charset=us-ascii


Hello goodbye pdf

--Apple-Mail=_CA0BDF81-AE2A-4E1A-9D37-8B30B5220C77
Content-Type: multipart/mixed;
    boundary="Apple-Mail=_FA44F8C6-5F68-44EF-9537-8E8651DAAC0C"


--Apple-Mail=_FA44F8C6-5F68-44EF-9537-8E8651DAAC0C
Content-Transfer-Encoding: 7bit
Content-Type: text/html;
    charset=us-ascii

<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word;
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""></div><div class=""><b class=""><i class="">Hello</i></b></div><div class=""><b class=""><i class="">goodbye pdf</i></b></div></body></html>
--Apple-Mail=_FA44F8C6-5F68-44EF-9537-8E8651DAAC0C
Content-Disposition: inline;
    filename*=utf-8''Zamo%CC%81wienie%20ZAM21%2D150528%2D01.pdf
Content-Type: application/pdf;
    x-unix-mode=0644;
    name="=?utf-8?Q?Zamo=CC=81wienie_ZAM21-150528-01=2Epdf?="
Content-Transfer-Encoding: base64

(here is a base64-encoded pdf that is being decoded correctly)
--Apple-Mail=_FA44F8C6-5F68-44EF-9537-8E8651DAAC0C
Content-Transfer-Encoding: 7bit
Content-Type: text/html;
    charset=us-ascii

<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word;
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""></body></html>
--Apple-Mail=_FA44F8C6-5F68-44EF-9537-8E8651DAAC0C--

--Apple-Mail=_CA0BDF81-AE2A-4E1A-9D37-8B30B5220C77--

Mailkit でこの種の問題に直面した人はいますか? それとも、ライブラリに依存するのではなく、特定の Apple メールだけでしょうか?

4

1 に答える 1

3

MimeMessage.TextBody および MimeMessage.HtmlBody プロパティは、メッセージの適切なテキスト本文部分を決定するために一般的な方法を使用する便利なプロパティです。残念ながら、「この 1 つの部分と 1 つの部分のみがテキスト本体で、他の 1 つの部分が HTML 本体」という厳密な定義はありません。

このメッセージの構造は次のとおりです。

multipart/alternative
  text/plain
  multipart/mixed
    text/html
    application/pdf
    text/html

通常、 ではmultipart/alternative、次の 2 つのケースのいずれかになります。

multipart/alternative
  text/plain
  text/html

また

multipart/alternative
  text/plain
  multipart/related
    text/html
    application/pdf

multipart/alternative代替ビューを定義します (私は知っています、ここで明白なことを述べています)。MimeKit はtext/plain、一般的な規則に従っているため、その部分を見つけます。しかし、次の選択肢はmultipart/mixed. これは HTML ではないため、MimeKit はそれをHtmlBody. のみを決定するための MimeKit のロジックは、 a の内部をHtmlBody理解します。これは、 の仕様がどの部分がルート ドキュメント (通常は HTML ドキュメント) であるかを定義するためです。multipart/relatedmultipart/alternativemultipart/related

メッセージの場合、これが意味するのは、multipart/mixed 代替ビューであり、送信エージェントがこれらの 3 つの部分を代替メッセージ本文として順番にレンダリングすることを意図していることです。これらの 2 つの html パーツの 1 つを選択して、それを html 本文として使用することはできません。これは、もう一方がないと (および pdf がないと) 不完全になるためです。

とはいえ、MimeKit は、メッセージ本文を取得するためにTextBodyおよびHtmlBodyプロパティの使用に限定しません。MimeKit は、必要なものを取得するために独自のロジックを使用して MIME 構造を自分で反復処理する方法をいくつか提供します。

次のドキュメントを参照してください。

よくある質問 / メッセージ本文

メッセージの操作

于 2015-06-15T11:50:58.973 に答える