Gmail API:使用包含变音符号的邮件地址会导致 SMTPEception:客户端或服务器仅针对具有 ASCII 本地部分的地址进行配置
Gmail API: Using mailadress containing umlauts results in SMTPEception: The client or server is only configured for addresses with ASCII local-parts
正在尝试使用 gmail api 将邮件发送到包含变音符号的邮件地址。例如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();
}
由于我使用的是 google 企业帐户,因此我无法直接使用 SMTPClient,因为 google 关闭了安全性较低的应用程序的使用。
我使用 IdnMapping class
解决了它
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;
büro@gmail.com 将解析为 xn--bro-hoa@gmail.com
正在尝试使用 gmail api 将邮件发送到包含变音符号的邮件地址。例如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();
}
由于我使用的是 google 企业帐户,因此我无法直接使用 SMTPClient,因为 google 关闭了安全性较低的应用程序的使用。
我使用 IdnMapping class
解决了它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;
büro@gmail.com 将解析为 xn--bro-hoa@gmail.com