我正在更新一个用于发送电子邮件的应用程序,以使用 GMAIL API 而不是 SMTP。
我遇到电子邮件编码问题。主题已按其应有的方式显示,但主体未正确显示。【以下是收到的邮件截图】
我用来发送电子邮件的代码:
public bool SendMailGmailAPI(System.Net.Mail.MailMessage mailMessage, GmailService service)
{
bool isEverythingOK = false;
try
{
var mimeMessage = MimeKit.MimeMessage.CreateFromMailMessage(mailMessage);
string mm = mimeMessage.ToString();
var gmailMessage = new Google.Apis.Gmail.v1.Data.Message
{
Raw = Encode(mm)
};
UsersResource.MessagesResource.SendRequest request = service.Users.Messages.Send(gmailMessage, mailMessage.From.Address);
request.Execute();
isEverythingOK = true;
}
catch (Exception e)
{
ErrorMessage = e.Message;
isEverythingOK = false;
}
return isEverythingOK;
}
public static string Encode(string text)
{
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(text);
return System.Convert.ToBase64String(bytes)
.Replace('+', '-')
.Replace('/', '_')
.Replace("=", "");
}
mailMessage 是由此生成的:
public MailMessage CreateEmailMessage(string mailto="")
{
EmailMessageToSend = new MailMessage();
//setting from, to, cc, bcc, replyto
//make body
EmailMessageToSend.BodyEncoding = System.Text.Encoding.UTF8;
//EmailMessageToSend.HeadersEncoding = System.Text.Encoding.UTF8;
EmailMessageToSend.SubjectEncoding = System.Text.Encoding.UTF8;
EmailMessageToSend.IsBodyHtml = true;
EmailMessageToSend.Body = Body + "<hr>";
EmailMessageToSend.Body += DateTime.Now.ToString("dd.MM.yyyy HH:mm");
EmailMessageToSend.Body += "<br /><br />ΔΗΛΩΣΗ ΕΜΠΙΣΤΕΥΤΙΚΟΤΗΤΑΣ / ΑΠΟΠΟΙΗΣΗ ΕΥΘΥΝΗΣ <br /> Αυτό το μήνυμα περιέχει εμπιστευτικές και απόρρητες πληροφορίες και η χρήση τους επιτρέπεται μόνον από τον αναφερόμενο παραλήπτη. Σε περίπτωση που περιέλθει σε σας από λάθος, παρακαλούμε να το διαγράψετε άμεσα από το σύστημά σας ή να το καταστρέψετε και να ειδοποιήσετε τον αποστολέα. <br /><br />" +" CONFIDENTIALITY WARNING / DISCLAIMER <br /> The information in this email is confidential and is intended solely for the addressee(s). If you have received this transmission in error, and you are not an intended recipient, be aware that any disclosure, copying, distribution or use of this transmission or its contents is prohibited.";
var htmlView = AlternateView.CreateAlternateViewFromString(EmailMessageToSend.Body, null, "text/html");
EmailMessageToSend.Subject = Subject+" - Mail v2.0";
return EmailMessageToSend;
}
on mimeMessage.ToString() i get this result
关于如何解决编码问题有什么建议吗?