Por que em algumas condições um email enviado com idSMTP não vai corretamente para a nova linha?

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

  •  29-10-2019
  •  | 
  •  

Pergunta

Estou enviando um e-mail somente de texto usando TIdMessage e TIdSMTP.

Para o Body Eu uso uma string concatenada simples como

Body := SomeText + #13#10 +
          SomeOtherText + #13#10 +
          SomeMoreText + #13#10 +
          FinalText;

De qualquer forma no e-mail gerado alguns dos "#13#10"não são ignorados.eu registro o Body variável e posso ver que o texto vai para nova linha, de qualquer forma no email isso não acontece.O estranho é que isso não acontece em todas as linhas, mas apenas em algumas linhas.

Você tem uma ideia de por que isso acontece?Você pode sugerir algo para verificar?Existe algum possível conflito entre #13#10 e um corpo de e-mail de texto em algumas condições?

ATUALIZAR

Depois de mais investigações (graças aos seus comentários), percebi que é um problema de visualização do Outlook, de qualquer forma, o problema ainda não está claro para mim.

Este é o corpo do e-mail aberto no NotePad++ (abri o arquivo msg salvo no Outlook) onde mostro também quebras de linha (você pode ver #13#10 como CR LF.Destaquei em vermelho e verde as 2 quebras de linha que são problemáticas no Outlook (mas você pode ver que no NP++ elas se parecem com todas as outras quebras de linha):Email body in NotePad++

O e-mail no Outlook se parece com isto (observe que o Outlook diz que a mensagem tem quebras de linha extras e que elas foram removidas, mas oferece uma opção para restaurá-las:EMail in Outlook displayin bad]

Depois de escolher essa opção o email está ok:enter image description here

Não entendo por que isso acontece apenas em algumas quebras de linha.Isso ajuda você a entender melhor o problema?

Foi útil?

Solução

Você poderia tentar usar IdMessage.NoEncode := True para que o Corpo não seja RCF 821 codificado.

Ou é melhor usar a codificação moderna IdMessage.ContentType := 'text/html' e substitua #13#10 com <br>

EDITAR:Este é um problema do Outlook Express.

Olhar Aqui e Aqui.Uma solução alternativa seria adicionar 2 caracteres vazios ao início de cada linha de texto para fazer com que o Outlook não remova as quebras.


Observe que o suporte da Microsoft também sugere o uso do formato HTML como uma possível solução alternativa com o Outlook Express:

Método 2. Use o formato HTML ou Rich TextVocê pode usar os formatos HTML ou Rich Text ao criar novos itens.Ou você pode alterar as postagens existentes para esses formatos.

Outras dicas

Pode ser que o cliente de e-mail retire algumas quebras de linha, se o seu ContentType for texto simples.

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