【问题标题】:How to send plain text emails using AlternateView and retain line breaks如何使用 AlternateView 发送纯文本电子邮件并保留换行符
【发布时间】:2023-04-01 12:11:01
【问题描述】:

我正在使用 AlternateView 发送纯文本电子邮件。我使用的代码类似于:

var msg = new MailMessage();
var body = $"Test sending\nA newline character\nIn a plaintext email";

msg.From = new MailAddress(fromAddr);
msg.To = new MailAddress(toAddr);
msg.Subject = "Test";
msg.IsBodyHtml = false;

AlternateView textView;
textView = AlternateView.CreateAlternateViewFromString(body, Text.Encoding.UTF8, Net.Mime.MediaTypeNames.Text.Plain);

AlternateView htmlView;
htmlView = AlternateView.CreateAlternateViewFromString(body, Text.Encoding.UTF8, Net.Mime.MediaTypeNames.Text.Html);

msg.AlternateViews.Add(textView);
msg.AlternateViews.Add(htmlView);

var client = new SmtpClient(smtpServer);
client.Send(msg);

不过,当我收到电子邮件时,它是这样来的:

测试在明文电子邮件中发送换行符

当我查看发送的原始邮件时,我可以看到换行符在那里,所以电子邮件客户端只是不显示它们。

如果我设置 msg.Body 并且不使用 AlternateView,则换行符会按预期出现。

为了让作为纯文本发送的 AlternateView 正确显示换行符,我需要做什么?

【问题讨论】:

  • 我认为它可能不会像你期望的那样工作......因为这是网络中文本的正常行为......如果你想格式化你的电子邮件,你需要使用 html 而不是纯文本.
  • 但是如果我不使用备用视图,而只设置 msg.Body,则换行符会很好
  • 不确定这也取决于电子邮件客户端以及它如何决定呈现电子邮件。
  • 当您没有替代视图时,为什么需要创建AlternativeView?对于纯文本电子邮件,只需设置 Body 属性。阅读remarks 部分。

标签: c# email mailmessage


【解决方案1】:

电子邮件的内容可以是 html 或纯文本,因此请尝试使用“
”或“\r\n”here 为例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-10
    • 2012-11-01
    • 1970-01-01
    • 2016-10-19
    • 2018-07-19
    • 1970-01-01
    • 2021-12-03
    • 2011-09-10
    相关资源
    最近更新 更多