【发布时间】: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