簡體   English   中英

Mimekit 通過 Gmail 發送重音字符

[英]Mimekit sending accented characters through Gmail

我正在使用 C# 和 MimeKit (AE.Net.Mail) 通過 Gmail 發送 email。 一切都很完美,直到我在身體里有一個重音名字。

我一直無法弄清楚如何正確發送重音字符。 這就是我現在使用代碼的地方。 我已經嘗試了幾十次迭代,到目前為止,沒有任何效果。 我已經嘗試過各種格式的編碼,但都沒有奏效,所以我在這個例子中刪除了所有這些。 我想重申。 email 完美運行,只是重音字符會導致問題。 我知道它與編碼有關,但我只是找不到讓它工作的秘訣。 (注意,答案確實需要在所有主要的郵件客戶端中工作)

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

您需要將消息寫入 Stream,然后修改 urlSafeToBase64() 方法以采用 stream 或字節 []

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM