Por que em algumas condições um email enviado com idSMTP não vai corretamente para a nova linha?
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):
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:
Depois de escolher essa opção o email está ok:
Não entendo por que isso acontece apenas em algumas quebras de linha.Isso ajuda você a entender melhor o problema?
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.