¿Cómo formateo una cadena en un correo electrónico para que Outlook imprima los saltos de línea?

StackOverflow https://stackoverflow.com/questions/136052

Pregunta

Estoy tratando de enviar un correo electrónico en Java, pero cuando leo el cuerpo del correo electrónico en Outlook, se eliminan todos mis saltos de línea. Estoy poniendo \ n al final de las líneas, pero ¿hay algo especial que deba hacer además de eso? Los receptores siempre usarán Outlook.

Encontré una página en microsoft.com que dice que hay un 'Eliminar saltos de línea' " feature " en Outlook, ¿significa esto que no hay otra solución para evitar eso además de desmarcar esa configuración?

Gracias

¿Fue útil?

Solución

Debe usar \r\n como solución.

Otros consejos

He estado luchando con esto hoy. Llamemos al comportamiento de eliminar los saltos de línea adicionales & Quot; continuación. & Quot; Un poco de experimentación encuentra el siguiente comportamiento:

  • Cada mensaje comienza con la continuación desactivada.
  • Las líneas de menos de 40 caracteres no activan la continuación, pero si la continuación está activada, se eliminarán los saltos de línea.
  • Las líneas de 40 caracteres o más activan la continuación. Permanece encendido hasta que ocurre un evento para apagarlo.
  • Las líneas que terminan con un punto, un signo de interrogación, un signo de exclamación o dos puntos desactivan la continuación. (¿Outlook asume que es el final de una oración?)
  • Las líneas que desactivan la continuación comenzarán con un salto de línea, pero volverán a activar la continuación si tienen más de 40 caracteres.
  • Las líneas que comienzan o terminan con una pestaña desactivan la continuación.
  • Las líneas que comienzan con 2 o más espacios desactivan la continuación.
  • Las líneas que terminan con 3 o más espacios desactivan la continuación.

Tenga en cuenta que probé todo esto con Outlook 2007. YMMV.
Entonces, si es posible, finalice todos los elementos de viñeta con un signo de puntuación que termina la oración, una pestaña o incluso tres espacios.

Puede forzar un salto de línea en perspectiva al adjuntar uno (¿o dos?) caracteres de tabulación (\ t) justo antes del salto de línea (CRLF).

Ejemplo:

This is my heading in the mail\t\n
Just here Outlook is forced to begin a new line.

Parece funcionar en Outlook 2010. Pruebe si funciona en otras versiones.

Consulte también Outlook limpiar automáticamente mis saltos de línea y arruinar mi formato de correo electrónico

Microsoft Outlook 2002 y superior elimina " saltos de línea adicionales " de mensajes de texto por defecto (kb308319) . Es decir, Outlook parece simplemente ignorar las secuencias de avance de línea y / o retorno de carro en mensajes de texto, ejecutando todas las líneas juntas.

Esto puede causar problemas si está intentando escribir código que generará automáticamente un mensaje de correo electrónico para que alguien lo lea con Outlook.

Por ejemplo, suponga que desea proporcionar información separada, cada una en líneas separadas para mayor claridad, como esta:

¡La transacción necesita atención!
PublicadoFecha: 30/01/2009
Monto: $ 12,222.06
TransID: 8gk288g229g2kg89
Código Postal: 91543

Su destinatario de Outlook verá toda la información combinada de la siguiente manera:

¡La transacción necesita atención! Fecha de publicación: 30/1/2009 Cantidad: $ 12,222.06 ID de trans: 8gk288g229g2kg89 Código postal: 91543

No parece haber una solución fácil. Las alternativas son:

  1. Puede suministrar dos conjuntos de saltos de línea entre cada línea. Eso impide que Outlook combine las líneas en una línea, pero luego muestra una línea en blanco adicional entre cada línea (creando el problema opuesto). Por & Quot; suministra dos conjuntos de saltos de línea & Quot; Quiero decir que deberías usar & Quot; \ r \ n \ r \ n & Quot; o " \ r \ r " o " \ n \ n " pero no " \ r \ n " o " \ n \ r " ;.
  2. Puede proporcionar dos espacios al comienzo de cada línea en el cuerpo de su mensaje de correo electrónico. Eso evita introducir una línea en blanco adicional entre cada línea. Pero esto funciona mejor si cada línea en su mensaje es bastante corta, porque el usuario puede estar previsualizando el texto en una ventana de Outlook muy estrecha que envuelve el final de cada línea a la primera posición en la línea siguiente, donde no alinee con sus líneas con sangría de dos espacios. Esta estrategia se ha utilizado para algunos =newsferlet""> >
  3. Puede dejar de usar un formato de texto plano y usar un formato html.

Tuve el mismo problema y encontré una solución. Pruebe esto: %0D%0A para agregar un salto de línea.

He usado el salto de línea html en lugar de " \ n " . Funcionó bien.

Agregando " \ t \ r \ n " (\ t para TAB) en lugar de " \ r \ n " funcionó para mí en Outlook 2010. Nota: ¡agregar 3 espacios al final de cada línea también hace lo mismo pero parece un truco de programación!

Necesita enviar correos electrónicos HTML. Con <br /> s en el correo electrónico, siempre tendrá sus saltos de línea.

Había estado luchando con todas las soluciones anteriores y nada me ayudó aquí, porque usé una variable de cadena (texto plano de un JTextPane) en combinación con & "; text / html &"; formateo en mi biblioteca de correo electrónico.

Entonces, la solución a este problema es usar " text / plain " ;, en lugar de " text / html " y no es necesario reemplazar los caracteres de retorno:

MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(message, "text/plain");

Ponga el texto en <pre> Etiquetas y Outlook formateará y mostrará el texto correctamente.

lo definí en CSS en línea en HTML Body como:

CSS:

pre {
 font-family: Verdana, Geneva, sans-serif;
}

definí la familia de fuentes para tener que configurar la fuente.

HTML:

<td width="70%"><pre>Entry Date/Time:       2013-09-19 17:06:25
Entered By:     Chris

worklog mania

____________________________________________________________________________________________________

Entry Date/Time:        2013-09-19 17:05:42
Entered By:     Chris

this is a new Worklog Entry</pre></td>

Debido a que es una consulta, solo funciona el porcentaje de caracteres escapados, significa que% 0A le da un salto de línea. Por ejemplo,

&lt;a href=&quot;mailto:someone@gmail.com?Subject=TEST&amp;amp;body=Hi there,%0A%0AHow are you?%0A%0AThanks&quot;&gt;email to me&lt;/a&gt;

El truco consiste en utilizar la funcionalidad encodeURIComponent() de js:

var formattedBody = "FirstLine \n Second Line \n Third Line";
var mailToLink = "mailto:x@y.com?body=" + encodeURIComponent(formattedBody);

RESULTADO:

FirstLine
SecondLine
ThirdLine

Para Outlook 2010 y versiones posteriores, use \t\n en lugar de usar \ r \ n.

\ r \ n no funcionará hasta que establezca el tipo de cuerpo como texto.

message.setBody(MessageBody.getMessageBodyFromText(msg));
BodyType type = BodyType.Text;
message.getBody().setBodyType(type);

RESUELTO EN MI APLICACIÓN

En mi aplicación, intentaba enviar un correo electrónico cuyo cuerpo de mensaje fue escrito por el usuario en el área de texto. Cuando se envió el correo, Outlook eliminó automáticamente el salto de línea ingresado por el usuario.

por ejemplo, si el usuario ingresó
Yadav
Mahesh

Outlook lo mostró como
YadavMahesh

Resolución: cambié el carácter de salto de línea " \ r \ n " con " \ par " (recuerde presionar el espacio al final del código RTF " \ par ") y se restauran los saltos de línea.

Saludos,
Mahesh

Si puede agregar un '.' (punto) al final de cada línea, esto parece evitar que Outlook arruine el formato del texto.

Prueba esto:

message.setContent(new String(body.getBytes(), "iso-8859-1"),
                    "text/html; charset=\"iso-8859-1\"");

Saludos, Mohammad Rasool Javeed

Pruebe \r\c en lugar de \n.

EDITAR: creo que @Robert Wilkinson lo hizo bien. \r\n. La memoria ya no es lo que solía ser.

El \n funciona en gran medida para nosotros, pero Outlook a veces se encarga de eliminar los saltos de línea como usted dice.

Tengo una buena solución que lo probé, es solo agregar el Char (13) al final de la línea como en el siguiente ejemplo:

Dim S As String
 S = "Some Text" & Chr(13)
 S = S + "Some Text" & Chr(13)

si el mensaje es texto / sin formato, \ r \ n debería funcionar; si el tipo de mensaje es text \ html, use < p/>

Esto debe ser útil para usted. intente "% 0A " en lugar de " \ n " ;. La fuente real es aquí.

Necesita agregar "% 0A " donde sea que necesite una nueva línea en su código. En tu caso

 abcParameters.put(defConstants.REPORT_MESSAGE, "Invalid file sent by tt. Hence ffgghh  was unable
              to process it : " + s+ "%0A" +e.getMessage().toString());

También tuve este problema con el tipo de correo sin formato / texto. Anteriormente, usé & Quot; \ n \ n & Quot; pero hubo dos saltos de línea. Entonces, usé & Quot; \ t \ n & Quot; Y funcionó. Estaba usando StringBuffer en Java para agregar contenido.
El contenido se imprimió en la siguiente línea en el correo de Outlook 2010.

También tuve este problema con el tipo de correo sin formato / texto. El formulario de alimentación \f funcionó para mí.

A veces tienes que ingresar \ r \ n dos veces para forzar que Outlook haga el descanso.

Esto agregará una línea vacía pero todas las líneas tendrán un salto.

si el trabajo debe realizarse con texto formateado sin codificación html. se puede lograr fácilmente con el siguiente escenario en el que crea un elemento div sobre la marcha y usa < código> < pre > < / pre > elemento html para mantener el formato.

var email_body = htmlEncode($("#Body").val());

 function htmlEncode(value) {
    return "<pre>" + $('<div/>').text(value).html() + "</pre>";
}

No estoy seguro de si se mencionó anteriormente, pero Outlook tiene una configuración de casilla de verificación llamada " Eliminar saltos de línea adicionales en mensajes de texto sin formato " y se comprueba por defecto. Se encuentra en un lugar diferente para diferentes versiones de Outlook, pero para 2010 vaya a " Archivo " lengüeta. Seleccione " Opciones = > Correo " Desplácese hacia abajo hasta " Formato de mensaje " Desmarque la casilla de verificación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top