2011-12-25 30 views
97

Podría permitir que la aplicación web envíe correos electrónicos automáticos con el Programador de tareas de Windows. Ahora quiero enviar un correo electrónico con formato HTML utilizando el siguiente método que escribí para enviar correos electrónicos.¿Cómo enviar un correo electrónico con formato HTML?

Mi código subyacente:

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(); 
      } 
     } 
    } 

cómo hacerlo? Solo quiero poner texto en negrita con un enlace y tal vez una imagen en el correo electrónico.

Respuesta

158

Configuración isBodyHtml a true le permite utilizar etiquetas HTML en el cuerpo del mensaje:

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

podemos utilizar una fuente personalizada ?? – Wanderer

+0

Muchas gracias @Shai –

+0

No puede personalizar las fuentes fácilmente ya que las fuentes personalizadas deben ser compatibles con el cliente de correo. Muchos clientes de correo todavía usan un tipo de código HTML pre-IE6 muy básico, por lo que se asignarán a otra fuente de manera predeterminada. –

18

Esto funciona para mí

msg.BodyFormat = MailFormat.Html; 

y luego se puede usar HTML en su cuerpo

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

Esto funciona para 'MailMessage' en [' System.Web.Mail'] (https://msdn.microsoft.com/en-us/library/system.web.mail.mailmessage.bodyformat%28v=vs.110% 29.aspx). Hacer 'IsBodyHtml' es para el de [' System.Net.Mail'] (https://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.isbodyhtml (v = vs.110)) .aspx) –

60

La mejor manera de enviar html con formato de correo electrónico

Este código estará en "Customer.htm"

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

leer el archivo HTML usando System.IO.File.ReadAllText. obtener todo el código HTML en la variable de cadena.

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

Reemplazar una cuerda particular a su valor personalizado.

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

llamada SendEmail (cuerpo de cuerda) Función y procedimiento para enviar un correo electrónico.

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

Quizás use ** MailDefinition ** o ** RazorEngine ** *** http: //stackoverflow.com/questions/10512845/how-to-send-email-wth-email-template-c-sharp *** – Kiquenet

+0

Gracias, esto funcionó para mí y me ha ahorrado horas. –

Cuestiones relacionadas