【发布时间】:2020-10-07 07:17:41
【问题描述】:
我正在 vb .net 上构建一个 Windows 窗体应用程序,其中一个发送 HTML 电子邮件。我可以发送电子邮件和 html 标签,而 css 不会显示,这意味着程序“知道”它是 html 而不仅仅是字符串。但我只是将文本块(在任何 p、h 或标签上)作为平面文本,一个接一个没有格式。
我尝试使用来自 Nuget 包的 EASendmail,结果相同。 我在谷歌和这里搜索了这个问题,但没有成功。
这就是我所拥有的
Dim message As New MailMessage()
Dim fromAdd As MailAddress = New MailAddress("my mail here")
With message
.[To].Add("somebody email here")
.Subject = "TEST"
.From = fromAdd
.Priority = MailPriority.Normal
.IsBodyHtml = True
.BodyEncoding = System.Text.Encoding.UTF8
.Body = " <!DocType HTML>....the rest of the html code with the css..."
end with
Dim smtpClient As New SmtpClient("smtp.live.com")
With smtpClient
.EnableSsl = True
.Port = 587
.UseDefaultCredentials = False
.Credentials = New System.Net.NetworkCredential("mymail@somewhere.com", "password")
.DeliveryMethod = SmtpDeliveryMethod.Network
.Send(message)
.Dispose()
End With
Catch ex As Exception
MsgBox(ex.Message)
End Try
现在我期待一个漂亮的 html 电子邮件,我将其保存为一个 html 页面,并且在 chrome 中打开时它显示得很好。 出于某种原因,我只将文本段落作为平面文本获取,没有任何格式,任何附件也被忽略,图像文件附加到电子邮件但邮件不会显示它们。
【问题讨论】:
-
始终创建两个MailMessage.AlternateViews,一个用于纯文本,另一个用于 HTML MIME 类型。至于图像。您需要为每个创建一个新的 LinkedResource 并将它们添加到 HTML 视图的 LinkedResources 集合中,并将 HTML 中每个的
cid替换为其不带扩展名的路径。长篇大论? -
签出this。
-
我尝试过这种方式并得到相同的结果......好吧,我刚刚为html创建了alterateview......可能是这样???
-
今天我会尝试并在这里发布结果谢谢
-
修复了!!!两者兼而有之,我只是更正了 ' 符号,其中一个有趣的版本是由 word 制作的,并且在添加 2 alterateview 之后它的工作!谢谢!!
标签: vb.net