从 C# 发送 html 电子邮件

Posted

技术标签:

【中文标题】从 C# 发送 html 电子邮件【英文标题】:Sending html emails from C# 【发布时间】:2011-03-26 17:44:38 【问题描述】:

我正在尝试向 gmail 帐户发送 html 电子邮件,但由于某种原因,Google 正在从我的电子邮件中删除 html。当我发送到其他帐户(非 gmail 帐户)时,HTML 会被保留,所以我知道我的 html 是正确的。

我是这样处理的:

    我有一个 aspx 页面,用作电子邮件模板。 我从 Web 服务中的 aspx 页面中获取 html(在 C# 中完成) 在 Web 服务中通过 c# 代码动态填充非静态内容。 将其作为电子邮件正文发送。

有谁知道 gmail 为什么要删除 html? 提前致谢。

【问题讨论】:

在这里分享最低限度的非工作代码。 【参考方案1】:

当我发送到其他帐户(非 gmail 帐户)时,HTML 会被保留,因此我知道我的 html 是正确的。

这不是编程问题。如果是这样,正如您所观察到的那样,所有客户端都会发生这种情况。

问题是这样的:大多数现代电子邮件客户端允许用户选择禁止 html 消息,或始终将其视为纯文本。这可能就是这里正在发生的事情。您必须编写代码才能预料到这一点,因为您无法控制用户的偏好。如果他们启用了此功能,并且您仅将其作为 html 发送,那么他们看起来会很丑。

但是,为了解决您的问题,您应该始终将邮件作为 Multi-Part Mime 消息发送,以使所有客户都能获得可读性好的版本。

【讨论】:

谢谢大卫。我一定会确保它是多部分哑剧【参考方案2】:

您需要确保在 MailMessage 上将 IsBodyHtml 属性设置为 true:

var message = new MailMessage();
message.IsBodyHtml = true;
// Fill and send message here

查看 MSDN 参考以获得更多信息:

System.Net.Mail.MailMessage Members

【讨论】:

以上是关于从 C# 发送 html 电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

从 C# 发送 Mandrill 电子邮件

使用 SmtpClient 通过 C# 发送 HTML 电子邮件

如何发送带有 HTML 标签的电子邮件,而不是 C# 中的 HTML 纯文本

是否可以在 gmail.com 帐户中找到从 C# 以编程方式发送的电子邮件?

如何使用电子邮件模板c#发送电子邮件

C# 发送邮件3