我正在使用 Mailkit 发送消息。这就是我正在做的事情:
var multipart = new Multipart("alternative")
{
new TextPart(MimeKit.Text.TextFormat.Html) { Text = messageHtml },
new TextPart(MimeKit.Text.TextFormat.Text) { Text = messagePlain }
};
var mimeMessage = new MimeMessage()
{
Subject = emailTemplate.Subject,
Body = multipart
};
mimeMessage.From.Add(new MailboxAddress(fromName, fromEmail));
mimeMessage.To.Add(new MailboxAddress(name, email));
using (var client = new SmtpClient())
{
await client.ConnectAsync(options.Server, options.Port.Value, SecureSocketOptions.Auto, ct);
await client.AuthenticateAsync(Encoding.UTF8, options.Username, options.Password, ct);
await client.SendAsync(mimeMessage, ct);
await client.DisconnectAsync(true, ct);
}
HTML 版本的开头是这样的:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="format-detection" content="telephone=no"><meta name="viewport" content="width=device-width, initial-scale=1.0">
邮件将发送至 Gmail 帐户。在移动设备上查看时,消息的 HTML 版本可以正确显示。但是,在浏览器中查看消息时,显示的是纯文本版本。
我是否缺少一些设置?
问题解决了。
文本部分的顺序(如果重要),从最后一个开始:
var multipart = new Multipart("alternative")
{
new TextPart(MimeKit.Text.TextFormat.Text) { Text = messagePlain },
new TextPart(MimeKit.Text.TextFormat.Html) { Text = messageHtml }
};