2011-12-25 3 views
97

웹 응용 프로그램이 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(); 
      } 
     } 
    } 

어떻게 그렇게 할 수? 나는 이메일에 하나의 링크와 어쩌면 하나의 이미지가 담긴 텍스트를 넣기를 원할 뿐이다. trueisBodyHtml 설정

답변

158

메시지 본문에 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 –

+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 서식을 사용하는 가장 좋은 방법은 다음과 같습니다.

이 코드는 System.IO.File.ReadAllText 사용 "Customer.htm"

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

읽기 HTML 파일에있을 것입니다. 문자열 변수에있는 모든 HTML 코드를 가져옵니다.

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

특정 문자열을 사용자 지정 값으로 바꿉니다.

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

호출 SendEmail (문자열 본문) 전자 메일을 보내기위한 기능 및 수행 절차입니다.

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

감사합니다 -이 일은 나를 위해 일했으며 시간을 절약 해주었습니다. –

관련 문제