我有以下发送简单电子邮件的方法:
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代码(这就是问题所在)。
答案 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变得容易。