为了账号安全,请及时绑定邮箱和手机立即绑定

使用 .NET 生成 HTML 电子邮件

使用 .NET 生成 HTML 电子邮件

C#
弑天下 2022-12-31 12:48:50
为了使用 .NET 应用程序生成简单的 HTML 电子邮件,我已经苦苦挣扎了两天。已经有几个关于此主题的已回答 问题,并且在每种情况下语法都相对简单。我仍然花了一天多的时间才开始工作。然而,该解决方案引发了更多问题。我查看了 Microsoft文档,但在那里什么也没找到。此语法有效并将生成一封 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。
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

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

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

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

NB You claim isBodyHTMLwas set to true 在这两种情况下,但这没有任何意义。在第二种情况下,您没有将MailMessage对象传递给方法...该IsBodyHtml属性属于MailMessage. 那么,您还可以如何以及在哪里设置这样的值?

在第二种情况下,该方法获取的唯一值是Send()四个字符串(fromto和)。它不会收到有关电子邮件的任何其他信息。该属性从未使用过,因为它是 un-used 的一部分。subjectbodyisBodyHTMLMailMessage


查看完整回答
反对 回复 2022-12-31
?
守着一只汪

TA贡献1872条经验 获得超3个赞

IsBodyHTML因为按照您的方式使用 Send 函数时,没有指定set 为 true 。我认为IsBodyHTML是在MailMessage对象内。

我不完全确定IsBodyHTMLbody 中设置了什么,但它可能会创建完整格式的 HTML (< html><head><body>etc....),所以不妨试试看。


查看完整回答
反对 回复 2022-12-31
?
杨魅力

TA贡献1811条经验 获得超6个赞

在内部对您不起作用的过载看起来或多或少像这样

MailMessage mailMessage = new MailMessage(from, recipients, subject, body);
Send(mailMessage);

它创建一个 MailMessage 实例,不设置 IsBodyHtml 并调用其他重载。IsBodyHtml 控制用于邮件正文 MimePart 的 MediaType,如果未设置 IsBodyHtml,将使用 PlainText 代替 Html MimePart。设置 IsBodyHtml 不会以任何方式更改 Body 属性的内容,因此您必须使用 MailMessage 的重载,以便您可以显式设置 IsBodyHtml。


查看完整回答
反对 回复 2022-12-31
  • 3 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号