0


1

MailMessageのすべての部分のエンコーディングを設定する

私は国際市場向けの.NETアプリケーションをターゲットにしており、メール送信機能を実装する必要があります。 MailMessageクラスには、エンコードを設定するためのいくつかのオプションがあります。

アプリの構成ページにドロップダウンを追加して、メールメッセージのエンコードを選択します。

このエンコードを使用するには、MailMessageのすべてのプロパティを設定することをお勧めしますか? 世界中のメールサーバーとクライアントが処理しますか? または、このように設定する必要があるのは一部だけですか?

1 Answer


2


短い答えは*いいえ*です。

ここで、*なぜ*を詳しく説明します。 正しくi18n-edメールメッセージはこれらの機能をサポートします:

  • FromおよびToヘッダーの国際化ドメイン名(IDNA)サポート (CC、BCC、Reply-Toなど)

  • Subjectおよびその他のヘッダーの認識可能で安全なエンコード

  • 正しいボディエンコーディング

とりあえず、国際化ドメイン名は基本的なASCII文字列で、Punycodeでエンコードされます(詳細については、http://tools.ietf.org/html/rfc3492 [RFC 3492]、http:// toolsをご覧ください。 ietf.org/html/rfc5891[RFC 5891]およびhttp://tools.ietf.org/html/rfc5890[RFC 5890])。 簡単に言うと、 IdnMapping`クラスを使用してUTF-16文字列をASCIIに変換する必要があります(これは GetAscii() `メソッドを呼び出すことで実行できます)。

件名行およびその他の(アドレス以外の)ヘッダーの安全なエンコードにより、当面は7ビット安全である必要があることを意味します。古いメール転送エージェントや古いメール転送エージェントの多くは8ビットエンコードをサポートしていないためですここに。 したがって、ここでユーザーの選択を実際にサポートできますが、ユーザーがISO-8859-x、KOI-8-x、またはShift-JISなどを選択した場合、Quoted PrintableまたはBase64アルゴリズムを使用してヘッダーをさらにエンコードすることをお勧めします。 。 ユーザーがUTF-8を選択した場合、QPまたはB64と同様にUTF-7でヘッダーをエンコードできます。

最後になりましたが、ユーザーが選択した電子メールメッセージのエンコードをサポートすることもできます。 ただし、16ビットベース(UCS2やUTF-16など)の場合、Transfer EncodingをBase64などに設定することをお勧めします。