Пробелы отображаются в электронной почте, отправленной с SMTP-клиента - PullRequest
0 голосов
/ 23 апреля 2020

Я отправляю электронные письма от SMTPClient следующим образом:

    var mailMessage = new MailMessage
    {
        To = "Test",
        Subject = "Subject",
        Body = "Body"
    };

    var smtp = new SmtpClient();
    smtp.Send(mailMessage);

Он создает файл .eml со следующим содержимым:

X-Sender: admin@localhost
X-Receiver: admin@localhost
MIME-версия: 1.0
От: admin@localhost
До: admin@localhost
Дата: 23 апреля 2020 12:46:27 + 1000
Subject: TestSubject Content-Type: text / html;
charset = us-ascii
Content-Transfer-Encoding: цитируемая для печати

Field:   Value1=0D=0AField_a: Value2=0D=0A

Внутри тела I ' используя пробелы для размещения текста на нескольких строках, чтобы они выровнялись. Однако, когда я открываю сгенерированную электронную почту в outlook, пространство визуализации уменьшается, и выравнивание сбрасывается.

Если я скопирую текст из электронного письма в Блокнот, он отобразит ОК. Если я заново сохраню письмо из Outlook, оно будет отображаться в порядке.

Можно ли настроить письмо так, чтобы символы пробела отображались с той же шириной, что и другие буквы?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Вы также обнаружите, что Outlook склонен удалять то, что он считает дополнительными переносами строк.

Лучшим подходом является отправка электронной почты в виде HTML с тегом <pre>.

<code>var mailMessage = new MailMessage
{
    To = "Test",
    Subject = "Subject",
    Body = "<pre>Body
", IsBody Html = true;};
0 голосов
/ 23 апреля 2020

Письмо было настроено для отображения в виде обычного текста, и поэтому Outlook использовал его шрифт по умолчанию, который в моем случае не был моноширинным, и поэтому буквы имели различную ширину.

...