【问题标题】:Mimekit sending accented characters through GmailMimekit 通过 Gmail 发送重音字符
【发布时间】:2022-01-23 08:44:42
【问题描述】:

我正在使用 C# 和 MimeKit (AE.Net.Mail) 通过 Gmail 发送电子邮件。 一切都很完美,直到我在正文中有一个重音名称。

我一直无法弄清楚如何正确发送重音字符。这就是我现在使用代码的地方。我已经尝试了几十次迭代,到目前为止,没有任何效果。我尝试了各种格式的编码,但都没有奏效,所以我在这个例子中删除了所有这些。 我想重申。电子邮件运行良好,只是重音字符会导致问题。我知道它与编码有关,但我只是找不到让它工作的秘诀。 (注意,答案确实需要在所有主要的邮件客户端中工作)

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("=", "");
}

【问题讨论】:

  • 那是主题行。我的主题行工作正常。我只需要让 UTF-8 在体内工作,而我所做的一切都不起作用。

标签: c# gmail diacritics mimekit accent-sensitive


【解决方案1】:

这是问题的原因:

Raw = urlSafeToBase64(mimeMessage.ToString())

ToString() 方法不是为了做这样的事情,它只是为了调试目的。查看文档:http://www.mimekit.net/docs/html/M_MimeKit_MimeMessage_ToString.htm

您需要将消息写入 Stream,然后修改 urlSafeToBase64() 方法以获取流或字节 []

【讨论】:

  • 天啊!!!就是这样!!我开始的示例使用了 .ToString,我从未想过要质疑它。太感谢了!!!没有其他代码更改就修复了它!!!!这就解释了为什么我尝试的每个示例都失败了。我所做的所有更改都在消息对象中,而不是发送对象的“原始”部分。谢谢!!
猜你喜欢
  • 2011-03-08
  • 2017-04-30
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
  • 2018-10-07
  • 2016-08-31
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多