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

Posted

技术标签:

【中文标题】如何通过 Mimekit/Mailkit 发送 HTML 消息【英文标题】:How to send HTML message via Mimekit/Mailkit 【发布时间】:2017-04-30 20:12:21 【问题描述】:
BodyBuilder bodyBuilder = new BodyBuilder();
messageContent.Body = "<b>This is a test mail</b>";
bodyBuilder.htmlBody = messageContent.Body;

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

【问题讨论】:

【参考方案1】:

像你一样使用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,是否存在仅包含一个而不包含两个可能被识别为垃圾邮件的风险? 这可能取决于收件人的邮件软件 更多真实世界样本?【参考方案2】:

MimeKit Documentation - Creating Messages

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

"TextPart 是具有文本媒体类型的叶节点 MIME 部分。TextPart 构造函数的第一个参数指定媒体子类型:plainhtml丰富的rtfxml。”

【讨论】:

我在让其他示例工作时遇到问题。这个很完美。谢谢!【参考方案3】:

如果你想严格一点,这里还有一个选择;

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

【讨论】:

【参考方案4】:
var bodyBuilder = new BodyBuilder();
bodyBuilder.HtmlBody = body;
bodyBuilder.TextBody = "-";

message.Body = bodyBuilder.ToMessageBody();

在某些邮件 ISP 中,您应该始终按值设置 bodyBuilder.TextBody。

【讨论】:

以上是关于如何通过 Mimekit/Mailkit 发送 HTML 消息的主要内容,如果未能解决你的问题,请参考以下文章

通过 SOCKS5 c++ 发送和接收

通过 Linux 套接字发送文件描述符

改造不通过 h​​ttps 发送标头

如何通过蓝牙将串行数据发送到未指定的设备?

如何通过 GCM 向 iOS 设备发送推送通知?

通过 gstreamer udpsink 流式传输 h.264 时如何解决图像问题