web-dev-qa-db-ja.com

SmtpException:クライアントまたはサーバーは、ASCII local-partsの電子メールアドレス用にのみ構成されています

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

System.Net.Mail.SmtpException:クライアントまたはサーバーは、ASCII local-parts:lé[email protected]の電子メールアドレス用にのみ構成されています。
at 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("[email protected]");
msg.To.Add(new MailAddress("lé[email protected]"));

new SmtpClient().Send(msg);

app.config

<system.net>
    <mailSettings>
        <smtp from="[email protected]">
            <network Host="smtp.gmail.com" port="587" userName="[email protected]" password="password" enableSsl="true" />
        </smtp>
    </mailSettings>
</system.net>
16
Xavier Poinas

SmtpClientインスタンスの DeliveryFormat プロパティが SmtpDeliveryFormat.SevenBit (デフォルト)に設定されている場合、EHLOの送信時にSMTPゲートウェイがSMTPUTF8で応答していることを確認する必要があります電子メールを送信しようとしている間、.NETによって。 SmtpClientはこれを使用して、ゲートウェイがUTF8をサポートできるかどうかを判断します。

DeliveryFormatがSmtpDeliveryFormat.Internationalの場合、関係なく送信できます。

22
Andrew

遅い答えですが、私は次のようにエンコーディングを指定することでこれを解決しました:

var mailMessage = new MailMessage
            {
               From = new MailAddress("[email protected]", "Test User", Encoding.UTF8)
}

私の場合、サーバーがエラーの原因でした。

2
robasta