0

国際市場向けの .NET アプリケーションを対象としており、メール送信機能を実装する必要があります。MailMessageクラスには、エンコーディングを設定するためのオプションがいくつかあることに気付きました。

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

このエンコーディングを使用するように MailMessage のすべてのプロパティを設定するのがベスト プラクティスですか? 世界中のメールサーバーとクライアントはそれを処理できますか? それとも、一部のみをこのように設定する必要がありますか?

4

1 に答える 1

2

短い答えはノーです。

では、その理由を詳しく説明します。正しく国際化されたメール メッセージは、次の機能をサポートしています。

  • From ヘッダーと To ヘッダーの国際化ドメイン名 (IDNA) のサポート (および CC、BCC、Reply-To など)
  • Subject およびその他のヘッダーの認識可能で安全なエンコード
  • 本文のエンコードを修正する

当分の間、i18n 化されたドメイン名は、Punycode でエンコードされた基本的な ASCII 文字列です (詳しくはRFC 3492RFC 5891およびRFC 5890を参照してください)。簡単に言うと、IdnMappingclass を使用して UTF-16 文字列から ASCII に変換する必要があります (GetAscii()メソッドを呼び出すことで実行できます)。

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

最後になりましたが、電子メール メッセージの本文に対してユーザーが選択したエンコーディングをサポートできますし、サポートする必要があります。ただし、16 ビット ベース (UCS2 や UTF-16 など) の場合は、転送エンコーディングを Base64 などに設定することをお勧めします。

于 2010-10-24T19:40:44.903 に答える