Como faço para formatar um String em um e-mail para que Outlook imprimirá as quebras de linha?

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

Pergunta

Estou tentando enviar um e-mail em Java, mas quando li o corpo do e-mail no Outlook, é chegado livrar de todos os meus quebras de linha. Estou colocando \ n nas extremidades das linhas, mas há algo especial que eu preciso fazer diferente do que? Os receptores são sempre vai estar usando Outlook.

Eu encontrei uma página em microsoft.com que diz que há uma 'linha de remover quebras' "recurso" no Outlook Então, isso significa que não há solução para contornar isso que não seja o ambiente de verificação de un?

Graças

Foi útil?

Solução

Você precisa usar \r\n como uma solução.

Outras dicas

Eu apenas fui lutar com isso hoje. Vamos chamar o comportamento de remover as quebras de linha extras "continuação". Um pouco de experimentação encontra o seguinte comportamento:

  • Cada mensagem começa com a continuação off.
  • Linhas menos de 40 caracteres não disparam continuação, mas se continuação é, eles terão suas quebras de linha removido.
  • Lines 40 caracteres ou mais continuação liga. Ele permanece ligada até ocorrer um evento para desligá-lo.
  • linhas que terminam com um período, ponto de interrogação, ponto de exclamação ou cólon vez continuação off. (Outlook assume que é o fim de uma frase?)
  • As linhas que por sua vez continuação off vai começar com uma quebra de linha, mas vai virar continuação de volta se eles são mais de 40 caracteres.
  • As linhas que começam ou terminam com uma aba virada continuação off.
  • As linhas que começam com 2 ou mais espaços transformar continuação off.
  • linhas que terminam com 3 ou mais espaços se transformam continuação off.

Por favor note que eu tentei tudo isso com o Outlook 2007. YMMV.
Então, se possível, acabar com todos os itens de bala com uma marca de terminação frase pontuação, uma guia, ou mesmo três espaços.

Você pode forçar uma quebra de linha no Outlook quando anexando um (ou dois?) Caracteres de tabulação (\ t), pouco antes da quebra de linha (CRLF).

Exemplo:

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

Parece que funciona no Outlook 2010. teste Por favor, se isso funciona em outras versões.

Veja também Outlook autocleaning meus quebras de linha e estragar o meu formato de e-mail

Microsoft Outlook 2002 e acima remove "quebras de linha extra" de mensagens de texto por padrão (kb308319) . Ou seja, Outlook parece simplesmente ignorar alimentação de linha e / ou seqüências de retorno de carro em mensagens de texto, correndo todas as linhas juntos.

Isto pode causar problemas se você está tentando escrever código que irá gerar automaticamente uma mensagem de e-mail para ser lido por alguém usando o Outlook.

Por exemplo, suponha que você queira fornecer peças separadas de informações cada em linhas separadas para maior clareza, como este:

Transaction precisa de atenção!
PostedDate: 2009/01/30
Valor: $ 12,222.06
TransID: 8gk288g229g2kg89
PostalCode: 91.543

O destinatário Outlook verá a todas as informações esmagados juntos, como se segue:

Transaction precisa de atenção! PostedDate: 2009/01/30 Valor: $ 12,222.06 TransID: 8gk288g229g2kg89 Cep: 91543

Há não parece ser uma solução fácil. As alternativas são:

  1. Você pode fornecer dois conjuntos de quebras de linha entre cada linha. Isso faz parar Outlook de combinar as linhas em uma linha, mas, em seguida, exibe uma linha em branco entre cada linha (criando o problema oposto). Por "fornecimento de dois conjuntos de quebras de linha" Quer dizer que você deve usar "\ r \ n \ r \ n" ou "\ r \ r" ou "\ n \ n", mas não "\ r \ n" ou "\ n \ r".
  2. Você pode fornecer dois espaços no início de cada linha no corpo da sua mensagem de e-mail. Isso evita a introdução de uma linha em branco entre cada linha. Mas isso funciona melhor se cada linha em sua mensagem é bastante curto, porque o usuário pode ser pré-visualizar o texto em uma janela muito estreita Outlook que envolve o final de cada linha em volta para a primeira posição na linha seguinte, onde não alinhar com os seus dois-espaço recuado linhas. Esta estratégia tem sido usada há algum boletins .
  3. Você pode dar-se no uso de um formato de texto simples, e usar um formato html.

Eu tive o mesmo problema, e encontrou uma solução. Tente isto:. %0D%0A para adicionar uma quebra de linha

Eu tenho usado html quebra de linha em vez de "\ n". Funcionou muito bem.

Como adicionar "\ t \ r \ n" (\ t para TAB) em vez de "\ r \ n" trabalhou para mim em Outlook 2010. Nota: a adição de 3 espaços no final de cada linha também fazer mesma coisa, mas que parece um truque de programação

!

Você precisa enviar e-mails HTML. Com <br />s no e-mail, você sempre terá as suas quebras de linha.

Eu estava lutando com todas as soluções acima e nada ajudou aqui, porque eu usei uma variável String (texto simples a partir de um JTextPane) em combinação com "text / html" formatação na minha biblioteca e-mail.

Assim, a solução para este problema é a utilização de "text / plain", em vez de "text / html" e não há necessidade de substituir caracteres de retorno em tudo:

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

Coloque o texto na <pre> Etiquetas e perspectivas irá formatar e exibir o texto corretamente.

i definiu no CSS inline no corpo HTML como:

CSS:

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

i definiu o font-family ter de conjunto de fontes.

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>

Porque é uma consulta, única cento escapou personagens trabalho, meios% 0A dá-lhe uma quebra de linha. Por exemplo,

&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;

O truque é usar a funcionalidade 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 o Outlook 2010 e versões posteriores, use \ t \ n em vez de usar \ r \ n.

\ r \ n não funcionará até que você defina o tipo de corpo como texto.

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

RESOLVIDO no meu aplicativo

Na minha aplicação, eu estava tentando enviar um e-mail cujo corpo mensagem foi digitado pelo usuário na área de texto. Quando o email foi enviado, outlook linha removidos automaticamente ruptura introduzida pelo usuário.

por exemplo, se entrou usuário
Yadav
Mahesh

outlook exibido-lo como
YadavMahesh

Resolução: eu mudei a linha de caráter break "\ r \ n" com "\ par" (lembre-se de espaço hit no final do código RTF "\ par") e quebras de linha são restrored .

Cheers,
Mahesh

Se você pode adicionar em um '' caractere (ponto) no final de cada linha, esta parece impedir que o Outlook arruinar formatação de texto.

Tente isto:

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

Saudações, Mohammad Rasool Javeed

Tente \r\c vez de \n.

EDIT: eu acho @ Robert Wilkinson tinha razão. \r\n. Memória não é apenas aquilo que costumava ser.

O \n em grande parte trabalha para nós, mas o Outlook, por vezes, tomar a iniciativa de remover as quebras de linha como você diz.

Eu tenho uma boa solução que eu tentei, ele é apenas adicionar o Char (13) no fim da linha como o exemplo a seguir:

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

Se a mensagem é text / plain usando, \ r \ n deve trabalhar; se o tipo de mensagem é o texto \ html, uso < p/>

Este deve ser útil para você. tentar "% 0A" em vez de "\ n". A fonte real é href="http://support.microsoft.com/kb/48885" aqui.

Você precisa adicionar "% 0A" onde quer que você precisa de uma nova linha em seu código. No seu caso

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

Eu também tive esse problema com o tipo de correio simples / texto. No início, eu usei "\ n \ n", mas houve duas quebras de linha. Então, eu usei "\ t \ n" e funcionou. Eu estava usando StringBuffer em java para o conteúdo de acréscimo.
O conteúdo foi impresso na próxima linha no Outlook 2010 mail.

Eu também tive esse problema com plain / text correio type.Form alimentação \f funcionou para mim.

Às vezes você tem que digitar \ r \ n duas vezes para outlook força para fazer o intervalo.

Isto irá adicionar uma linha vazia, mas todas as linhas terão intervalo.

se necessário trabalho a ser feito com o texto formatado com a html codificação. Pode ser fácil alcançado com seguinte cenário que cria div elemento na mosca e usando <pre></pre> html elemento para manter a formatação.

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

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

Não tenho certeza se ele foi mencionado acima, mas Outlook tem uma configuração de caixa de seleção chamada "Remover quebras de linha extras em mensagens de texto simples" e é marcada por padrão. Ele está localizado em um local diferente para diferentes versões do Outlook, mas para 2010 Vá para a guia "Arquivo". Selecione "Opções => Mail" Desça até "formato de mensagem", desmarque a caixa de seleção.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top