发送HTML电子邮件 - 如何将.html文件附加到电子邮件中?

时间:2017-04-07 21:01:38

标签: c# asp.net

我有以下发送简单电子邮件的方法:

private void WelcomeMail(string recipient)
{
    MailMessage mailMessage = new MailMessage("MyEmail", recipient);
    StringBuilder sbEmailBody = new StringBuilder();

    sbEmailBody.Append("How can I attach .html file here instead of writing the whole code");

    mailMessage.IsBodyHtml = true;
    mailMessage.Body = sbEmailBody.ToString();
    mailMessage.Subject = "Welcome to domain.com";
    SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587);
    smtpClient.Credentials = new System.Net.NetworkCredential()
    {
        UserName = "MyEmail",
        Password = "MyPassword"
    };
    smtpClient.EnableSsl = true;
    smtpClient.Send(mailMessage);
}  

我应该删除/更改/添加什么来发送HTML格式的电子邮件?

HTML文件名为responsivemail.html,包含超过100行的HTML代码(这就是问题所在)。

1 个答案:

答案 0 :(得分:1)

如果您的站点根目录中的HTML文件名为emailtemplate.html,则只需将HTML读入内存并将其分配给电子邮件正文。

mailMessage.Body = File.ReadAllText(Server.MapPath("~/emailtemplate.html"));

我不建议这样做,但您也可以直接将HTML嵌入代码中。由于HTML跨越多行,我们需要使用字符串文字(@"this is a string literal")。 HTML可能有双引号。你需要通过加倍双引号来逃避它们。

mailMessage.Body = @"
  <h1>This is HTML in an email!</h1>
  <a href=""http://google.com\"">This is a test link.</a>
";

长期来看,如果您要发送带有HTML的电子邮件,并且需要向其中注入值,我建议您查看Postal或其他库。邮政甚至可以让embed images变得容易。