18

強調文字 (é) を含むアドレスに電子メールを送信しようとすると、SmtpClient.Send() メソッドがこの例外をスローします

System.Net.Mail.SmtpException: クライアントまたはサーバーは、ASCII ローカル部分を持つ電子メール アドレス用にのみ構成されています: léo.xxx@example.com。
System.Net.Mail.MailAddress.GetAddress (Boolean allowUnicode)
で System.Net.Mail.SmtpClient.ValidateUnicodeRequirement (MailMessage...)
で System.Net.Mail.SmtpClient.Send (MailMessage メッセージ) で

メッセージの定式化により、この件については何も見つけられませんでしたが、これを機能させるために有効にできる設定があるかもしれません。

Gmail を含むいくつかの SMTP サーバーを試しました。再現に関連するビットは次のとおりです。

コード

var msg = new MailMessage();
msg.Subject = "Test";
msg.From = new MailAddress("xxx@gmail.com");
msg.To.Add(new MailAddress("léo.yyy@gmail.com"));

new SmtpClient().Send(msg);

app.config

<system.net>
    <mailSettings>
        <smtp from="xxx@gmail.com">
            <network host="smtp.gmail.com" port="587" userName="xxx@gmail.com" password="password" enableSsl="true" />
        </smtp>
    </mailSettings>
</system.net>
4

4 に答える 4

27

インスタンスのDeliveryFormatプロパティが(デフォルト) に設定されている場合、SMTP ゲートウェイがメールの送信中に .NET から送信されたときに応答していることを確認する必要があります。これを使用して、ゲートウェイが UTF8 をサポートできるかどうかを判断します。SmtpClientSmtpDeliveryFormat.SevenBitSMTPUTF8EHLOSmtpClient

.NET Framework 4.5+ と .NET コアの両方のソースによると、受信サーバーは UTF8 をサポートするDeliveryFormat必要があり、送信できるように設定する必要がありSmtpDeliveryFormat.Internationalます。

最新のロジックと完全な詳細については、以下を参照IsUnicodeSupportedしてください。

于 2013-04-17T14:24:27.210 に答える
-6

.net は ASCII 文字のみをサポートします。拡張 ASCII 文字 (問題のアクセント付き e を含む) をサポートしているとは思えません。

http://www.asciitable.com/

ユーザーが a / e にデンマーク語の文字を使用しようとすると、同じ問題が発生しました。

于 2012-11-07T03:44:14.590 に答える