7

添付ファイル付きの電子メールを送信する SMTP クライアントを作成しました。私のプログラムから送信された電子メールが Outlook で受信されると、2 つの添付ファイルが表示されることを除いて、すべて問題ありません。

私は検索を行いました -同様の問題に対してこのような多くの一致を見つけ、できる限りすべてをチェックしました。さらに、私のプログラムから送信されたメールと Opera から送信された 2 つのメールを比較しましたが、違いを推測することはできません。ただし、Opera が送信するものは正しく解釈されますが、私のプログラムが送信するものはそうではありません。私のプログラムが送信する内容は、他の一連のメール クライアントによって正しく解釈されますが、Outlook では解釈されません。

SMTP サーバーに telnet で接続し、2 つの電子メールをテキスト ファイルに取得しました。電子メール クライアントによる解釈に影響を与えるような違いは見られませんでした。

以下はメッセージの例です (アドレスは置換され、ファイルの内容は切り取られ、空白行は実際のメッセージとまったく同じように表示され、行が 80 文字を超えることはありません):

宛先: user1@host.com、user2@host.com
件名: 件名
コンテンツ タイプ: マルチパート/混合。境界="------------境界"
MIME バージョン: 1.0

-  -  -  -  -  -  - 境界
コンテンツ タイプ: テキスト/プレーン。charset="utf-8"
コンテンツ転送エンコーディング: base64

ここに Base64 でエンコードされたテキスト部分があります - ローカライズされている可能性があるため、
UTF8にしてBase64にしたほうがいい

-  -  -  -  -  -  - 境界
Content-Disposition: 添付; ファイル名="file.jpg"
コンテンツ タイプ: アプリケーション/オクテット ストリーム。名前="ファイル.jpg"
コンテンツ転送エンコーディング: base64

ここにBase64でエンコードされたファイルデータが入ります

-  -  -  -  -  -  - 境界

最後の境界の後で改行を試してみました - なし、1、2、3 を試しましたが、状況は改善されません。

Outlook によって正しく解釈されるメッセージを生成するために、メール クライアントが従わなければならない一連の奇妙な制限はありますか?

4

1 に答える 1

13

MIME パートの最後の境界は、2 つのダッシュを追加して示す必要があります。

MIME バージョン: 1.0
コンテンツ タイプ: マルチパート/混合。境界="------------境界"

-  -  -  -  -  -  - 境界
...

-  -  -  -  -  -  - 境界
...

-  -  -  -  -  -  - 境界 - 

詳細はこちら: RFC1341 / 7.2 The Multipart Content-Type

于 2009-03-27T17:36:26.653 に答える