如何使用 AlternateView 发送纯文本电子邮件并保留换行符

问题描述

我使用 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,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 或纯文本,因此请尝试使用“
”或“\r\n”here 是一个示例