8

正しくエンコードされていない電子メールを受信して​​いるクライアントがあります。System.Net.Mail クラスを使用し、本文のエンコーディングを UTF-8 に設定しています。私は少し読んだことがありますが、メールの本文をデータをUTF-8バイト配列にエンコードする文字列として設定する必要があるため、変換する必要があるため、UTF-である文字列に戻す必要があるため、実際には何もしません。 16. 正しい?

私が送るとき: Il s'agit d'un message de test pour determiner comment le système va gérer les messages envoyés à l'aide des caractères français. メルシー エ ボンヌ ジュルネ。

彼らは次 のように見ています。

Merci et bonne journée.*

電子メールでさまざまなエンコーディングを試しましたが、電子メール クライアントがこれを正しく表示するため、クライアントが電子メールを正しくデコードしていないのではないかと本当に疑っています。何か不足していますか?他にできることはありますか?

以下のコード

SmtpMailService.SendMail(string.Empty, toAddress, "emailaddress@emai.com", "", subject, sb.ToString(), false);

 public static bool SendMail(string fromAddress, string toAddress, string ccAddress, string bccAddress, string subject, string body, bool isHtmlBody)
    {

        if (String.IsNullOrEmpty(toAddress)) return false;
        var toMailAddress = new MailAddress(toAddress);

        var fromMailAddress = new MailAddress(String.IsNullOrEmpty(fromAddress) ? DefaultFromAddress : fromAddress);

        var mailMessage = new MailMessage(fromMailAddress, toMailAddress);

        if (!String.IsNullOrEmpty(ccAddress))
        {
            mailMessage.CC.Add(new MailAddress(ccAddress));
        }

        if (!String.IsNullOrEmpty(bccAddress))
        {
            mailMessage.Bcc.Add(new MailAddress(bccAddress));
        }

        if (!string.IsNullOrEmpty(fromAddress)) mailMessage.Headers.Add("Reply-To", fromAddress);

        mailMessage.Subject = subject;
        mailMessage.IsBodyHtml = isHtmlBody;
        mailMessage.Body = body;
        mailMessage.BodyEncoding = System.Text.Encoding.UTF8;

        var enableSslCfg = ConfigurationManager.AppSettings["Email.Ssl"];
        var enableSsl = string.IsNullOrEmpty(enableSslCfg) || bool.Parse(enableSslCfg);
        var client = new SmtpClient {EnableSsl = enableSsl};

        client.Send(mailMessage);


        return true;
    }
4

5 に答える 5

1

唯一の方法は、文字マップを使用していて、html がコードを別のガベージ文字にエンコードしているため、文字を適切な文字に置き換えることです。

次のようにコードを変更できます。

WebClient myClient = new WebClient();

        byte[] requestHTML;
        string currentPageUrl = HttpContext.Current.Request.Url.AbsoluteUri;
        UTF8Encoding utf8 = new UTF8Encoding();
        requestHTML = myClient.DownloadData(currentPageUrl);
        var str = utf8.GetString(requestHTML);"
        str = str.Replace("’", "'");
于 2017-01-23T11:55:51.800 に答える