2017-04-07 219 views
0

我已經發送一個簡單的電子郵件下面的方法:發送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

回答

0

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