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

问题描述:

我已经发送一个简单的电子邮件下面的方法:发送HTML电子邮件 - 如何将.html文件附加到电子邮件?

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

你想添加什么HTML?你正在做的一切,你只是缺乏HTML。你想HTML作为*附件*,还是在* body *中? – Amy

+0

看起来你已经有了吗?你只需要在添加到'sbEmailBody'的字符串中添加HTML标签。所以我不确定你在问什么?反正,如果你打算做HTML电子邮件,你应该看看[Postal](https://github.com/andrewdavey/postal)。 – mason

+0

我从一个网站(这是一个html文件,所有的

等标签)的HTML电子邮件。我询问了如何将附加的.html文件附加到附加区 – concretejungle

如果您的网站根目录中的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