MailMessage c# - 如何使其成为 HTML 并添加图像等?

Posted

技术标签:

【中文标题】MailMessage c# - 如何使其成为 HTML 并添加图像等?【英文标题】:MailMessage c# - How to make it HTML and add images etc? 【发布时间】:2011-12-13 23:04:58 【问题描述】:
string to = "email@hotmail.co.uk";
 string body = "Test";
 SmtpClient SMTPServer = new SmtpClient("127.0.0.1");
 MailMessage mailObj = new MailMessage(urEmail, to, subject, body);
 SMTPServer.Send(mailObj);

这就是我目前发送测试电子邮件的方式。 我如何制作这个 html 并能够通过添加图像等使发送的电子邮件看起来更好?

谢谢

【问题讨论】:

最好不要将 SmtpClient 对象称为 SMTPServer。 【参考方案1】:

MailMessage 上将属性IsBodyHtml 设置为true。

string to = "email@hotmail.co.uk";
string body = "Test";
SmtpClient SMTPServer = new SmtpClient("127.0.0.1");
MailMessage mailObj = new MailMessage(urEmail, to, subject, body);

mailObj.IsBodyHtml = true; // This line

SMTPServer.Send(mailObj);

【讨论】:

【参考方案2】:

对于您关于将图像添加到电子邮件的问题,如果您要求嵌入,那么您可以使用 HTML 的锚标记,或者使用我猜的 mailObj.Attachments.Add() 方法将图像文件附加到邮件中。

但最好的方法是将图像作为附件发送,因为有些防火墙只是阻止嵌入的图像,但允许附件。因此,尽管这不是一种完美的方式,但您在交付内容时会更加安全。

【讨论】:

【参考方案3】:

有两种方法:

    在您的邮件中嵌入图像。 (见this question)

    通过 HTML 邮件中图像标签的 src 属性链接到图像。这需要您将图像文件托管在收件人可以访问的网络服务器上的某个位置。

在这两种情况下,您都需要发送带有 html 正文的邮件。

mailObj.IsBodyHtml = true;

【讨论】:

【参考方案4】:

您可以使用以下想法来获取一个 ASPX 页面并将其呈现为一个字符串:

StringWriter writer = new StringWriter();
Server.Execute("Login.aspx", writer);
string html = writer.ToString();

如果您随后将 MailMessage.IsBodyHtml 设置为 true,您可以发送 HTML 消息。如果您想使用图片和其他内容,请确保电子邮件的收件人可以访问这些图片。

【讨论】:

【参考方案5】:

你必须设置mailObj .IsBodyHtml = true;

【讨论】:

以上是关于MailMessage c# - 如何使其成为 HTML 并添加图像等?的主要内容,如果未能解决你的问题,请参考以下文章

c#怎么把mailmessage保存为eml文件?

如何重置为提交并使其成为大师?

如何在导航栏中放置 UIImage 使其成为徽标?

Razor 如何创建一个 CheckBox 并使其成为 READONLY?

Django用户模型电子邮件字段:如何使其成为强制性

如何合并两个模型集合并使其成为一个分页然后将其发送到 Laravel 中的视图