Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Gmail API:使用包含umlauts的MailAddress会导致SMTPEception:客户端或服务器仅配置为包含ASCII本地部分的地址_C#_Email_Google Api_Gmail Api_Mimekit - Fatal编程技术网

C# Gmail API:使用包含umlauts的MailAddress会导致SMTPEception:客户端或服务器仅配置为包含ASCII本地部分的地址

C# Gmail API:使用包含umlauts的MailAddress会导致SMTPEception:客户端或服务器仅配置为包含ASCII本地部分的地址,c#,email,google-api,gmail-api,mimekit,C#,Email,Google Api,Gmail Api,Mimekit,尝试将带有gmail api的邮件发送到包含umlauts的邮件地址。e、 g.büro@gmail.com. 获取SmtpException,然后: maildress: GeneralFailure: System.Net.Mail.SmtpException: The client or server is only configured for E-mail addresses with ASCII local-parts: büro@gmail.com. bei System.Net.

尝试将带有gmail api的邮件发送到包含umlauts的邮件地址。e、 g.büro@gmail.com. 获取SmtpException,然后:

maildress: GeneralFailure: System.Net.Mail.SmtpException: The client or server is only configured for E-mail addresses with ASCII local-parts: büro@gmail.com.
bei System.Net.Mail.MailAddress.GetUser(Boolean allowUnicode)
bei System.Net.Mail.MailAddress.GetAddress(Boolean allowUnicode)
bei System.Net.Mail.MailAddress.GetSmtpAddress(Boolean allowUnicode)
bei System.Net.Mail.SmtpClient.ValidateUnicodeRequirement(MailMessage message, MailAddressCollection recipients, Boolean allowUnicode)
bei System.Net.Mail.SmtpClient.Send(MailMessage message)
我知道,当我直接使用.net smtp客户端时,您可以将SmtpDeliveryFormat.International设置为可以。但是当我使用gmail api时,如何设置它呢

private GmailService _service;

public void SendMail(MailMessage message)
{
    message.SubjectEncoding = Encoding.UTF8;
    message.BodyEncoding = Encoding.UTF8;
    message.IsBodyHtml = true;

    MimeKit.MimeMessage mimeMessage = MimeKit.MimeMessage.CreateFromMailMessage(message);
    Message sendMmessage = new Message {Raw = Base64UrlEncode(mimeMessage)};

    _service.Users.Messages.Send(sendMmessage, _fromMailAdress).Execute();
}
因为我使用的是谷歌商业账户,所以我不能直接使用SMTPClient,因为谷歌关闭了不太安全的应用程序。

我用

布鲁ro@gmail.com将解析为xn--bro-hoa@gmail.com

请参见以下内容:
IdnMapping idn = new IdnMapping();

MailMessage message = new MailMessage
{
    From = new MailAddress(_fromMailAdress),
};
message.BodyEncoding = Encoding.UTF8;
message.IsBodyHtml = true;
message.To.Add(idn.GetAscii(toMailAdress));
message.Subject = subject;
message.Body = content;