2011-12-25 54 views
97

我可以讓Web應用程序使用Windows任務計劃程序發送自動電子郵件。現在我想使用我爲發送電子郵件編寫的以下方法發送HTML格式的電子郵件。如何發送HTML格式的電子郵件?

我的後臺代碼:

protected void Page_Load(object sender, EventArgs e) 
    { 
     SmtpClient sc = new SmtpClient("mail address"); 
     MailMessage msg = null; 

     try 
     { 
      msg = new MailMessage("[email protected]", 
       "[email protected]", "Message from PSSP System", 
       "This email sent by the PSSP system"); 

      sc.Send(msg); 
     } 

     catch (Exception ex) 
     { 
      throw ex; 
     } 

     finally 
     { 
      if (msg != null) 
      { 
       msg.Dispose(); 
      } 
     } 
    } 

如何做到這一點?我只想在電子郵件中加入一個粗體文字,並且可能只有一個圖像。

回答

158

設置isBodyHtmltrue允許您在郵件正文中使用的HTML標籤:

msg = new MailMessage("[email protected]", 
       "[email protected]", "Message from PSSP System", 
       "This email sent by the PSSP system<br />" + 
       "<b>this is bold text!</b>"); 

msg.IsBodyHtml = true; 
+0

我們可以使用自定義字體嗎? – Wanderer

+0

謝謝非常多@Shai – 2016-11-08 15:12:47

+0

由於郵件客戶端需要支持自定義字體,所以無法輕鬆定製字體。許多郵件客戶端仍使用非常基本的IE6以前的HTML類型,因此它們將默認使用另一種字體。 –

18

這對我的作品

msg.BodyFormat = MailFormat.Html; 

然後你就可以在你的身體用html

msg.Body = "<em>It's great to use HTML in mail!!</em>" 
+7

這適用於['System.Web.Mail']中的'MailMessage'(https://msdn.microsoft.com/en-us/library/system.web.mail.mailmessage.bodyformat%28v=vs.110% 29.aspx)。做'IsBodyHtml'是['System.Net.Mail']中的一個(https://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.isbodyhtml(v = vs.110 ).aspx) –

60

發送html格式郵件的最佳方式

該代碼將在 「Customer.htm

<table> 
    <tr> 
     <td> 
      Dealer's Company Name 
     </td> 
     <td> 
      : 
     </td> 
     <td> 
      #DealerCompanyName# 
     </td> 
    </tr> 
</table> 

讀取HTML文件中使用System.IO.File.ReadAllText。獲取字符串變量中的所有HTML代碼。

string Body = System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath("EmailTemplates/Customer.htm")); 

將特定字符串替換爲您的自定義值。

Body = Body.Replace("#DealerCompanyName#", _lstGetDealerRoleAndContactInfoByCompanyIDResult[0].CompanyName); 

調用SendEmail(string Body)函數並執行發送電子郵件的過程。

public static void SendEmail(string Body) 
     { 
      MailMessage message = new MailMessage(); 
      message.From = new MailAddress(Session["Email"].Tostring()); 
      message.To.Add(ConfigurationSettings.AppSettings["RequesEmail"].ToString()); 
      message.Subject = "Request from " + SessionFactory.CurrentCompany.CompanyName + " to add a new supplier"; 
      message.IsBodyHtml = true; 
      message.Body = Body; 

      SmtpClient smtpClient = new SmtpClient(); 
      smtpClient.UseDefaultCredentials = true; 

      smtpClient.Host = ConfigurationSettings.AppSettings["SMTP"].ToString(); 
      smtpClient.Port = Convert.ToInt32(ConfigurationSettings.AppSettings["PORT"].ToString()); 
      smtpClient.EnableSsl = true; 
      smtpClient.Credentials = new System.Net.NetworkCredential(ConfigurationSettings.AppSettings["USERNAME"].ToString(), ConfigurationSettings.AppSettings["PASSWORD"].ToString()); 
      smtpClient.Send(message); 
     } 
+3

也許使用** MailDefinition **或** RazorEngine ** *** http://stackoverflow.com/questions/10512845/how-to-send-email-wth-email-template-c-sharp *** – Kiquenet

+0

謝謝 - 這對我有用,並節省了我的時間。 –