1

を使ってメールを送りますSystem.Net.Mail。今までメールのエンコーディングを utf-8 に設定していましたが、ISO-8859-1 エンコーディングを使用して送信する必要があります。エンコーディングを変更する方法を理解しました。エンコーディングを安全に変更できますか? これを変更すると、どのような問題に直面する可能性がありますか?

var email = new MailMessage(from, to)
{
    Subject = formManager.ReplaceValuesInString(alert.EmailSubject, replaceValues),
    IsBodyHtml = (alert.EmailMode == 2),
    BodyEncoding = Encoding.UTF8
};
4

2 に答える 2

1

あなたが直面するであろう主な問題は、UTF-8 が Unicode 全体をカバーしているのに対し、ISO-8859-1 はそうではなく、U+0000 から U+00FF しか持っていないということですU+0080 と U+009F の間の ISO-8859-1 の「穴」)。そのため、ISO-8859-1 にない文字を含むテキストを送信しようとすると、そのテキストは送信されません。

于 2012-09-26T12:00:56.653 に答える
0

誰がメールを書いているかによって異なります。

電子メールがすべてシステムで生成されたものである場合 (dbase や Web サービスから何かを取得する場合など)、電子メールのどの部分にも一貫性のない文字が含まれていないことを確認してください。しかし、ユーザーの入力を電子メール メッセージの全体または一部として中継している場合は、それほど簡単ではありません。

結論:電子メールがシステムで生成されたものである場合、コンテンツの生成方法を制御できる限り、どのようなエンコードでも安全に送信できます。制御できない場合は、可能なすべての文字をカバーする互換性のあるエンコーディングを使用して、保存する必要があります。

注意:膨大な量のデータ ストレージについて話している場合を除き、ユーザー入力の保存に utf-8 以外のエンコーディングを使用することはお勧めしません。また、dbase またはファイル システムで utf-8 エンコーディングを使用することによる無駄なスペースは、基盤となるシステム (fs、dbase) の組み込みの圧縮方法によって節約され、それらに任せることができます。

于 2012-09-26T12:25:00.950 に答える