如何通过Mimekit/Mailkit发送HTML邮件消息

62
BodyBuilder bodyBuilder = new BodyBuilder();
messageContent.Body = "<b>This is a test mail</b>";
bodyBuilder.HtmlBody = messageContent.Body;

我试图将我的身体嵌入到一个健美运动员的身体中,但是当我收到电子邮件时,它返回了一个空的正文。如果正文为空,我有一个会抛出参数异常的例外。

我尝试将我的身体嵌入到一个健美运动员的身体中,但是当我收到电子邮件时,正文为空。如果正文为空,我有一个例外会抛出一个参数错误。
4个回答

101

使用像你正在使用的 BodyBuilder 这样的东西可能是最简单的方法。

var bodyBuilder = new BodyBuilder();
bodyBuilder.HtmlBody = "<b>This is some html text</b>";
bodyBuilder.TextBody = "This is some plain text";

message.Body = bodyBuilder.ToMessageBody();

client.Send(message);

如果只包含 HtmlBody 而不是 TextBody,是否存在仅包含其中一个而被识别为垃圾邮件的风险? - LatentDenis
这可能取决于收件人的邮件软件。 - jstedfast
2
更多真实世界的示例? - Kiquenet
此外,如果邮件仍以纯文本形式显示,可能是因为收件人的邮件软件将其检测为垃圾邮件并将其转换为纯文本格式。例如,Outlook 会这样做。 - Himanshu
@jstedfast 我们如何将多张图片添加到正文中,而不是作为附件? - Ali
@jstedfast,它在两个不同的收件人中显示纯文本,我正在遵循相同的方式。 - Abid Hussain

41

MimeKit文档 - 创建邮件

var message = new MimeMessage();    
message.Body = new TextPart ("html") { Text = "<b>Test Message</b>" };

"TextPart是一个具有文本媒体类型的叶节点MIME部分。TextPart构造函数的第一个参数指定了媒体子类型: plain, html, enriched, rtf, 和 xml。"


我之前在尝试其他的例子时遇到了问题,但这个例子完美地运行了。谢谢! - RiverNet

25

如果你想要严格一些,还有另外一个选项;

msg.Body = new TextPart(MimeKit.Text.TextFormat.Html) { Text = "<b>html content</b>" };

3
var bodyBuilder = new BodyBuilder();
bodyBuilder.HtmlBody = body;
bodyBuilder.TextBody = "-";

message.Body = bodyBuilder.ToMessageBody();

在一些邮件ISP中,您应该始终通过值设置bodyBuilder.TextBody。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接