gpt4 book ai didi

c# - 无法以正确的格式对特殊字符电子邮件进行编码,gmail api & ae.net.mail

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:51 25 4
gpt4 key购买 nike

我正在开发一个可以发送带有附件的电子邮件的应用程序并且它可以正常工作,直到我尝试使用特殊字符 æ、ø、å。

enter image description here

我尝试了一些不同的编码测试,看起来主题是用 ISO-8859-1 编码的,而邮件的其余部分是用 UTF-8 编码的。

这是我生成 Google Gmail API 消息的方法

        public Message CreateMessage(string to, string from, string body, string subject, GmailService service, string[] files = null, string bcc = null)
{
AE.Net.Mail.MailMessage message = new AE.Net.Mail.MailMessage()
{
Subject = subject,
Body = body,
From = new MailAddress(from),
};

message.To.Add(new MailAddress(to));
message.ReplyTo.Add(message.From);

message.Headers.Add("Content-Type", "text/plain; charset=utf-8");

if (bcc != null)
message.Bcc.Add(new MailAddress(bcc));

if (files != null)
{
foreach(string file in files)
{
using (var opennedFile = File.Open(file, FileMode.Open, FileAccess.Read))
using (MemoryStream stream = new MemoryStream())
{
string[] FileName = file.Split('\\');
opennedFile.CopyTo(stream);
message.Attachments.Add(new AE.Net.Mail.Attachment(stream.ToArray(), MediaTypeNames.Application.Octet, FileName[FileName.Length - 1], true));
}
}
}

var msgStr = new StringWriter();
message.Save(msgStr);

return new Message() {
Raw = Base64UrlEncode(msgStr.ToString()),
};
}

private static string Base64UrlEncode(string message)
{
var inputBytes = Encoding.GetEncoding("utf-8").GetBytes(message);
return Convert.ToBase64String(inputBytes).Replace('+', '-').Replace('/', '_').Replace("=", "");
}

message.ContentType = "text/plain; charset=utf-8"没有解决这个问题,并使附件在正文中显示为 Base64

最佳答案

你可以使用 the following technique在主题 header 中使用 UTF-8。

=?charset?encoding?encoded-text?=

然后您可以使用 charset=utf-8encoding=B (B = base64),并将主题编码为 encoded-text .

示例

Subject: =?utf-8?B?aGVsbG8=?= // 'aGVsbG8=' is 'hello' in base64 format.

关于c# - 无法以正确的格式对特殊字符电子邮件进行编码,gmail api & ae.net.mail,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44748843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com