2010-10-14 12 views
8

HI, estoy tratando de enviar una notificación simple usando system.net.mail.mailmessage. Acabo de pasar la cadena como el cuerpo del mensaje. Pero el problema es que aunque el mensaje multilínea enviado tenga la información correcta del formato "\ r \ n" en la cadena. El correo abierto en outlook se mostrará como una sola línea larga. Pero view source en outlook mostrará el mensaje con el nuevo formato de línea correcto.MailMessage cadena enviada como cuerpo sin nueva línea en outlook

Por ejemplo: mensaje original se parecería a:

line1 
line 2 
line 3 

Pero será visualizado en Outlook como:

line1 line 2 line 3 

Ver código fuente de la perspectiva se siguen mostrando

line1 
line 2 
line 3 

¿Qué debo hacer para que Outlook visualice el mensaje con la ne correcta? información wline?

Respuesta

14

Outlook a veces elimina las nuevas líneas (generalmente aparece un comentario de que también lo ha hecho), no estoy seguro exactamente sobre las reglas para cuando lo hace, pero estoy bastante seguro si agrega un . (punto) al final de cada línea no los eliminará.

En realidad, mirando a este artículo parece que también se puede resolver mediante el envío de los mensajes de correo electrónico como HTML o RTF: Line breaks are removed in posts made in plain text format in Outlook

+0

¡Gracias! Funciona ahora –

+0

Pero, ¿por qué? ¿Por qué? Las perspectivas intentan eliminar el salto de línea en texto sin formato, de manera predeterminada, me supera. –

+0

@pstar: Creo que es para contrarrestar los problemas con el envoltorio de líneas. Como si me enviaras un correo electrónico con 80 caracteres y tengo la misma configuración + que prefija la respuesta con '>', mi respuesta envolvería tus líneas nuevamente para que tu texto original pareciera bastante feo. –

0

Ajuste el IsBodyHTML false:

ms.IsBodyHtml = false;

Por defecto es falso, pero parece que lo ha configurado en verdadero en alguna parte, ya que Outlook cree que es HTML.

+0

Intenté no configurar o establecer explícitamente IsBodyHtml en falso, no parece funcionar de ninguna manera. –

2

Que su cadena como a continuación

"Your string.\n" 

Y:

ms.IsBodyHtml = false; 

pero puede que tenga en su carpeta de basura

1

de Outlook siempre eliminará los saltos de línea, sin embargo, lo que puede ser used es el siguiente:

En lugar de usar: Es vironment.Newline o \ n \ r

Debe utilizar MiCadena cadena + = "esto es mi texto" + "% 0d% 0A"

Esto% 0d% 0A será reconocido por Outlook como la secuencia de escape para una nueva línea.

+0

Eso no funcionó. – eaglei22

+0

Es cierto: esto solía funcionar, pero ahora envía un mensaje con los saltos de línea faltantes. En outlook, debe hacer clic en el banner superior en el mensaje y seleccionar restaurar saltos de línea. No tengo ninguna solución en el momento – XikiryoX

+0

Ah bien. Gracias por la respuesta. Vea mi respuesta a continuación para saber qué terminé haciendo para que funcione con Outlook 2013. – eaglei22

3

Esto funcionó para mí

mMailMessage.IsBodyHtml = true; 
Literal1.Text = "Dear Admin, <br/>You have recieved an enquiry onyour Website. Following are the details of enquiry:<br/><br/>Name: " + TextBox2.Text + "<br/>Address: " + TextBox3.Text + ", " + TextBox4.Text + "<br/>Phone: " + TextBox5.Text + "<br/>Email: " + TextBox2.Text + "<br/>Query: " + TextBox6.Text+"<br/> Regards, <br/> Veritas Team"; 
mMailMessage.Body = Literal1.Text; 
+0

Agregando el "
" funcionó para mí. Para el fondo, estaba tomando un valor de celda que contiene el texto del cuerpo del correo electrónico y reemplazando Chr (10) con "
" para que el cuerpo del correo electrónico de la perspectiva salga correctamente. – Vamsi

0

Esto funcionó para mí:

mail.Body = String.Format(@"Some text here: 
A new line here 
And another line here"); 

Sólo tenga cuidado de no guión en la segunda y tercera línea.

0

Pude hacerlo funcionar agregando unos pocos espacios de cadena al final de la línea antes de la línea en problemas.

msg.Append("\n some Message" + " "); 
msg.Append("\n another message"); 
1

// el cuerpo del mensaje debe ser HTML // reemplaza los caracteres de nueva línea \ n \ r con el código HTML ruptura

mailMsg.IsBodyHtml = true; 
mailMsg.Body = this.Body; 
mailMsg.BodyEncoding = System.Text.Encoding.ASCII; 
mailMsg.Body = mailMsg.Body.Replace(Environment.NewLine, "<br/>"); 
0

Necro ansering una pregunta, pero podría ser útil para algunos también.

msg.IsBodyHtml = true; 
AlternateView av = AlternateView.CreateAlternateViewFromString(msg.Body, new System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Text.Html)); 
av.TransferEncoding = System.Net.Mime.TransferEncoding.SevenBit; 
msg.AlternateViews.Add(av); 
AlternateView avPlain = AlternateView.CreateAlternateViewFromString(msg.Body, new System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Text.Plain)); 
avPlain.TransferEncoding = System.Net.Mime.TransferEncoding.SevenBit; 
msg.AlternateViews.Add(avPlain); 
0

intente utilizar el operador pie de la letra "@" antes de su mensaje:

message.Body = 
@" 
line1 
line 2 
line 3 
" 

Considere que también la distancia del texto desde el margen izquierdo afecta el sistance de bienes desde el margen cuerpo del correo electrónico a la izquierda ..

Cuestiones relacionadas