Mimekit 通过 Gmail 发送重音字符
Mimekit sending accented characters through Gmail
我正在使用 C# 和 MimeKit (AE.Net.Mail) 通过 Gmail 发送电子邮件。
一切都很完美,直到我在正文中有一个带重音的名字。
我一直无法弄清楚如何正确发送重音字符。这就是我现在使用代码的地方。我已经尝试了数十次迭代,但到目前为止,没有任何效果。我试过各种格式的编码,none 有效,所以我在这个例子中删除了所有格式。
我想重申一下。电子邮件工作完美,只是重音字符导致了问题。我知道它与编码有关,但我就是找不到让它工作的秘诀。 (请注意,答案确实需要在所有主要邮件客户端中工作)
var msg = new AE.Net.Mail.MailMessage
{
Subject = "Hello Tést",
From = new MailAddress("support@domain.com"),
Sender = new MailAddress("support@domain.com"),
Body = "Dear Tést, Thanks",
ContentType = "text/html",
Importance = AE.Net.Mail.MailPriority.Normal,
};
msg.ReplyTo.Add("support@domain.com");
var mimeMessage = MimeMessage.CreateFromMailMessage(msg);
var result = new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = GetCredentials("support@domain.com"),
ApplicationName = "DomainApp",
})
.Users.Messages.Send(new Message
{
Raw = urlSafeToBase64(mimeMessage.ToString())
},
"me");
var t = result.ExecuteAsync().GetAwaiter().GetResult();
private string urlSafeToBase64(string input)
{
return Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(input))
.Replace('+', '-')
.Replace('/', '_')
.Replace("=", "");
}
这是问题的原因:
Raw = urlSafeToBase64(mimeMessage.ToString())
ToString() 方法并非用于执行此类操作,它仅用于调试目的。请参阅文档:http://www.mimekit.net/docs/html/M_MimeKit_MimeMessage_ToString.htm
您需要将消息写入流,然后修改您的 urlSafeToBase64() 方法以获取流或字节[]
我正在使用 C# 和 MimeKit (AE.Net.Mail) 通过 Gmail 发送电子邮件。 一切都很完美,直到我在正文中有一个带重音的名字。
我一直无法弄清楚如何正确发送重音字符。这就是我现在使用代码的地方。我已经尝试了数十次迭代,但到目前为止,没有任何效果。我试过各种格式的编码,none 有效,所以我在这个例子中删除了所有格式。 我想重申一下。电子邮件工作完美,只是重音字符导致了问题。我知道它与编码有关,但我就是找不到让它工作的秘诀。 (请注意,答案确实需要在所有主要邮件客户端中工作)
var msg = new AE.Net.Mail.MailMessage
{
Subject = "Hello Tést",
From = new MailAddress("support@domain.com"),
Sender = new MailAddress("support@domain.com"),
Body = "Dear Tést, Thanks",
ContentType = "text/html",
Importance = AE.Net.Mail.MailPriority.Normal,
};
msg.ReplyTo.Add("support@domain.com");
var mimeMessage = MimeMessage.CreateFromMailMessage(msg);
var result = new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = GetCredentials("support@domain.com"),
ApplicationName = "DomainApp",
})
.Users.Messages.Send(new Message
{
Raw = urlSafeToBase64(mimeMessage.ToString())
},
"me");
var t = result.ExecuteAsync().GetAwaiter().GetResult();
private string urlSafeToBase64(string input)
{
return Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(input))
.Replace('+', '-')
.Replace('/', '_')
.Replace("=", "");
}
这是问题的原因:
Raw = urlSafeToBase64(mimeMessage.ToString())
ToString() 方法并非用于执行此类操作,它仅用于调试目的。请参阅文档:http://www.mimekit.net/docs/html/M_MimeKit_MimeMessage_ToString.htm
您需要将消息写入流,然后修改您的 urlSafeToBase64() 方法以获取流或字节[]