从 SMTP 客户端发送的电子邮件中的空白呈现缩小

Posted

技术标签:

【中文标题】从 SMTP 客户端发送的电子邮件中的空白呈现缩小【英文标题】:White space renders shrinked in email sent from SMTP client 【发布时间】:2020-08-06 07:57:54 【问题描述】:

我正在从 SMTPClient 发送电子邮件,如下所示:

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

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

它会生成一个包含以下内容的 .eml 文件:

X-Sender: admin@localhost X-接收者:admin@localhost MIME 版本:1.0 来自:admin@localhost 收件人:admin@localhost 日期:2020 年 4 月 23 日 12:46:27 +1000 主题:TestSubject 内容类型:text/html; charset=us-ascii 内容传输编码:引用打印

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

在正文中,我使用空格在多行上布局文本,以便它们对齐。但是,当我在 Outlook 中打开生成的电子邮件时,空间会缩小并且对齐会被丢弃。

如果我将电子邮件中的文本复制到记事本中,它会显示正常。如果我从 Outlook 中重新保存电子邮件,它会呈现正常。

有没有办法将电子邮件配置为使空白字符呈现与其他字母相同的宽度?

【问题讨论】:

导致对齐问题的两台机器上的字体不同或显示器设置不同。 【参考方案1】:

电子邮件设置为以纯文本形式呈现,因此 Outlook 使用其默认字体,在我的情况下不是等宽字体,因此字母的宽度不同。

【讨论】:

【参考方案2】:

您还会发现 Outlook 倾向于删除它认为是多余的换行符。

更好的方法是将您的电子邮件以带有<pre> 标签的 HTML 格式发送。

var mailMessage = new MailMessage

    To = "Test",
    Subject = "Subject",
    Body = "<pre>Body</pre>",
    IsBodyHtml = true;
;

【讨论】:

以上是关于从 SMTP 客户端发送的电子邮件中的空白呈现缩小的主要内容,如果未能解决你的问题,请参考以下文章

使用 .NET core 2.2 中的 MailKit SMTP 客户端通过 Gmail SMTP 发送邮件对我不起作用

Smtp客户端 - 来自和不发送

如何在Linux命令行中通过SMTP服务器发送电子邮件

JavaWeb基础—邮件发送

如何使用 SMTP 发送邮件并在 Outlook 发件箱中查看邮件?

android:当缩小为真时未发送邮件