我从ASP.NET(VB)发送电子邮件时遇到了一些麻烦。这是我的代码
Using mm As New MailMessage("[email protected]", mc.mailTo)
If mc.mailCC.Trim <> "" Then
mm.CC.Add(mc.mailCC)
End If
If mc.mailBCC.Trim <> "" Then
mm.CC.Add(mc.mailBCC)
End If
mm.IsBodyHtml = True
mm.Subject = mc.mailSubject
mm.Body = b
Dim smtp As New SmtpClient()
Try
smtp.Send(mm)
Catch ex As SmtpException
gf.logArray(jA, ex.Message)
Dim statuscode As SmtpStatusCode
statuscode = ex.StatusCode
If statuscode = SmtpStatusCode.MailboxBusy Or statuscode = SmtpStatusCode.MailboxUnavailable Or statuscode = SmtpStatusCode.TransactionFailed Then
System.Threading.Thread.Sleep(5000)
smtp.Send(mm)
End If
End Try
End Using
我遇到的问题是。邮件发送正常。但是身体只显示HTML。即使我明确指定mm.isBodyHTML = true也不渲染。有什么建议请...
这是我得到的信息
我认为主要问题在于你的html消息体。尝试发送带有内容的邮件正文表,没有DOCTYPE,head和其他内容。
由于邮件代理在已存在的html页面中呈现您的邮件,因此无法在页面中呈现页面,因此代理将您的邮件正文编码为字符串。
如果你使用smtp发送电子邮件,你可以添加一个参数IsBodyHtml,我面临同样的问题,并通过设置IsBodyHtml = true修复,它适用于我。
var fromAddress = new MailAddress("[email protected]", "Abc Noreply");
var toAddress = new MailAddress(email, "");
const string fromPassword = "acbsexample";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = emailBody,
IsBodyHtml=true
})
{
smtp.Send(message);
}