c# - 使用 .NET 生成 HTML 电子邮件

标签 c# .net email html-email smtpclient

两天来,我一直在努力使用 .NET 应用程序生成简单的 HTML 电子邮件。有几个answered questions已经在这个主题上,并且在每种情况下语法都相对简单。我仍然花了一天多的时间才开始工作。然而,该解决方案引发了更多问题。我看过 Microsoft documentation在那里什么也没找到。

此语法有效并将生成一封 HTML 电子邮件:

MailMessage message = new MailMessage();
message.Subject = "Test";
message.From = new MailAddress("user@athisaddress.com");
message.To.Add("me@myorg.com");
message.Body = "<strong>This is a test</strong>";
message.IsBodyHtml = true;
smtpClient.Send(message);

但是,如果我使用带有四个参数签名的 SmtpClient 对象的 Send 方法,它不会生成 HTML 电子邮件:

smtpClient.Send("user@athisaddress.com", "me@myorg.com", 
    message.Subject, message.Body);

谁能解释一下为什么会这样。它是否记录在案,或者它是一个已知的“问题”? IsBodyHtml 在这两种情况下都设置为 true。

最佳答案

我认为对此的解释相当简单。

在第一种情况下,您在 MailMessage 对象中将 isBodyHtml 显式设置为 true。然后将 MailMessage 对象传递给 Send() 方法。因此,它会根据您的指示将电子邮件格式化为 HTML。

在第二种情况下,您无法告诉系统电子邮件的格式。纯文本通常是默认格式,因此在没有任何其他说明的情况下,我希望它会使用这种格式。

注意您声称 isBodyHTML 在这两种情况下都设置为 true,但这没有任何意义。在第二种情况下,您没有将 MailMessage 对象传递给方法...IsBodyHtml 属性属于 MailMessage。那么,您还可以如何以及在哪里设置这样的值?

在第二种情况下,Send() 方法获取的唯一值是四个字符串(fromtosubject正文)。它不会收到有关电子邮件的任何其他信息。 isBodyHTML 属性从未被使用,因为它是未使用的 MailMessage 的一部分。

关于c# - 使用 .NET 生成 HTML 电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55853281/

相关文章:

c# - 如何配置 ToolStripDropdownbutton 大小以匹配父下拉按钮的大小?

linux - 如何在 unix 脚本中发送带有消息的邮件

php - 是否有用于电子邮件地址验证的 PHP 库?

c# - 如何将项目添加到队列的前面?

c# - WPF 数据网格延迟加载

c# - ZipArchive 返回空文件夹 C#

c# - 用户定义的转换错误

c# - 关于 CoreFX 中 Stack 实现的分配

java - 如何在java中从任何用户(如gmail用户,yahoomail用户等)发送电子邮件?

c# - 正则表达式删除字符串末尾的非字母数字字符,该字符也出现在字符串的其他位置