【问题标题】:MailMessage c# - How to make it HTML and add images etc?MailMessage c# - 如何使其成为 HTML 并添加图像等?
【发布时间】: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。

标签: c# asp.net html mailmessage


【解决方案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】:

    你必须设置mailObj .IsBodyHtml = true;

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        有两种方法:

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

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

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

        mailObj.IsBodyHtml = true;
        

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 2017-01-17
            • 1970-01-01
            • 2010-11-13
            • 2022-07-26
            • 2012-07-13
            • 1970-01-01
            • 1970-01-01
            • 2017-05-08
            相关资源
            最近更新 更多