Как использовать TMemo для тела сообщения электронной почты в Delphi - PullRequest
1 голос
/ 06 апреля 2020

У меня есть объект TMemo, содержащий около 30 строк (некоторый текст, несколько пустых строк) текста, представляющих текст сообщения электронной почты, которое я хочу отправить приложению. В приведенном ниже коде я передаю текст в объекте TMemo в IdMessage1.Body.Text (Indy 10), но мое тело сообщения электронной почты, получающееся в результате, кажется, что это просто одна непрерывная строка. Я хотел бы видеть интервал, который у меня есть, который содержит несколько пустых строк. Если я скопирую содержимое из параметра Lines в TMemo и вставлю его в текстовый редактор, я смогу увидеть CR & LF в конце строк.

Удаляет ли CR & LF в этом переводе следует ли мне использовать для этого другой компонент, а не TMemo, или я неправильно передаю строки в TMemo на IdMessage1.Body.Text?

IdMessage1.Body.Text := EmailBodyMemo.Text;
IdMessage1.ContentType := 'text/html';

1 Ответ

5 голосов
/ 06 апреля 2020

Свойство TMemo.Text возвращает все содержимое в виде одного string без каких-либо «мягких» (перенос слов) разрывов строк, вставляемых между каждой строкой, только «жесткие» разрывы строк (явные CR / LF символов).

Используйте это вместо:

IdMessage1.Body.Text := EmailBodyMemo.Lines.Text;

Lines.Text возвращает string, каждая строка которого отделена Lines.LineBreak (CRLF по умолчанию для Windows) .

Или, лучше, используйте это вместо:

IdMessage1.Body := EmailBodyMemo.Lines;

То же самое, что сделать это:

IdMessage1.Body.Assign(EmailBodyMemo.Lines);
...