两天来,我一直在努力使用 .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()
方法获取的唯一值是四个字符串(from
、to
、subject
和 正文
)。它不会收到有关电子邮件的任何其他信息。 isBodyHTML
属性从未被使用,因为它是未使用的 MailMessage
的一部分。
关于c# - 使用 .NET 生成 HTML 电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55853281/