Principales respuestas
como dar formato a un correo c# windowsform

Pregunta
-
tengo el siguiente metodo
public void enviar_correo(string host, int puerto, string remitente, string contraseña, string nombre, string destinatarios, string cc, string asunto, string cuerpo) { try { SmtpClient cliente = new SmtpClient(host, puerto); MailMessage correo = new MailMessage(); correo.From = new MailAddress(remitente, nombre); correo.Body = cuerpo; correo.Subject = asunto; if (destinatarios == "") { } else { string[] cadena = destinatarios.Split(delimitador_cc); foreach (string word in cadena) correo.To.Add(word.Trim()); } if (cc == "") { } else { string[] cadena1 = cc.Split(delimitador_cc); foreach (string word in cadena1) correo.CC.Add(word.Trim()); } cliente.Credentials = new NetworkCredential(remitente, contraseña); cliente.EnableSsl = true; cliente.Send(correo); MessageBox.Show("El correo se ha enviado correctamente"); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
que se encarga de enviar correos pero estos se envian en texto plano.
como puedo modificarlo para poder cambiar el tipo de letra, color y otras propiedades.
- Cambiado Enrique M. Montejo miércoles, 13 de diciembre de 2017 15:57 Desarrollo con C#.
Respuestas
-
Para poder cambiar cosas como el tipo de letra y el color, hay que enviar el correo en HTML en lugar de texto plano. Para ello, se pone correo.IsBodyHtml=true, y luego en el texto del Body le metes un string formateado como si fuera para una página web, por ejemplo, <b>...</b> para negrita, <font...>...</font> para cambiar de fuente, etc.
Para hacerlo realmente bien hecho, deberías incluir en el mensaje dos vistas, una con el html y otra en texto plano para los destinatarios que no puedan verlo en html. Eso se hace con la propiedad AlternateViews.
https://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.isbodyhtml%28v=vs.110%29.aspx
https://stackoverflow.com/questions/2555813/what-does-mailmessage-isbodyhtml-do
- Propuesto como respuesta Jorge TurradoMVP miércoles, 13 de diciembre de 2017 9:22
- Marcado como respuesta Pablo RubioModerator jueves, 21 de diciembre de 2017 15:21
-
El problema es que has metido unas comillas dentro de la cadena que va entre comillas:
string rtbmensaje = " ... "https...." ....";
Tiene dos soluciones:
1) Escapar las comillas anteponiéndoles una contrabarra:
string rtbmensaje = " ... \"https....\" ....";
2) Cambiar las comillas internas por comillas simples, que al HTML le dan lo mismo:
string rtbmensaje = " ... 'https....' ....";
Nótese que esto no es culpa del mensaje de correo ni del hecho de que lo envíes como HTML, te pasaría lo mismo con cualquier otro string que hubieras usado en cualquier otro sitio y que tuviera que contener unas comillas.
- Propuesto como respuesta Pablo RubioModerator jueves, 14 de diciembre de 2017 16:21
- Marcado como respuesta Pablo RubioModerator jueves, 21 de diciembre de 2017 15:21
Todas las respuestas
-
Para poder cambiar cosas como el tipo de letra y el color, hay que enviar el correo en HTML en lugar de texto plano. Para ello, se pone correo.IsBodyHtml=true, y luego en el texto del Body le metes un string formateado como si fuera para una página web, por ejemplo, <b>...</b> para negrita, <font...>...</font> para cambiar de fuente, etc.
Para hacerlo realmente bien hecho, deberías incluir en el mensaje dos vistas, una con el html y otra en texto plano para los destinatarios que no puedan verlo en html. Eso se hace con la propiedad AlternateViews.
https://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.isbodyhtml%28v=vs.110%29.aspx
https://stackoverflow.com/questions/2555813/what-does-mailmessage-isbodyhtml-do
- Propuesto como respuesta Jorge TurradoMVP miércoles, 13 de diciembre de 2017 9:22
- Marcado como respuesta Pablo RubioModerator jueves, 21 de diciembre de 2017 15:21
-
estoy intentando insertar una imagen pero me da error al insertar la etiqueta de imagen.
string rtbmensaje = "<html><head></head><body> <img src="https://i0.wp.com/www.excsaltda.cl/wp-content/uploads/2015/10/logo.png?resize=241%2C126"><h1>notificacion de extintor vencido</h1> <ul><li>estimado cliente informamos que usted pose uno o mas extintores que ya han vencido</li> <li>Acerquese a nuestra sucursal para la recarga o mantención de su extintor</li> <li>Saluda atentamente a usted el equipo de excsa.</li></ul> </body> </html>";
me da el siguiente error:
se esperaba un ;
-
El problema es que has metido unas comillas dentro de la cadena que va entre comillas:
string rtbmensaje = " ... "https...." ....";
Tiene dos soluciones:
1) Escapar las comillas anteponiéndoles una contrabarra:
string rtbmensaje = " ... \"https....\" ....";
2) Cambiar las comillas internas por comillas simples, que al HTML le dan lo mismo:
string rtbmensaje = " ... 'https....' ....";
Nótese que esto no es culpa del mensaje de correo ni del hecho de que lo envíes como HTML, te pasaría lo mismo con cualquier otro string que hubieras usado en cualquier otro sitio y que tuviera que contener unas comillas.
- Propuesto como respuesta Pablo RubioModerator jueves, 14 de diciembre de 2017 16:21
- Marcado como respuesta Pablo RubioModerator jueves, 21 de diciembre de 2017 15:21
-