将HTML电子邮件发送-asp

3
我想在电子邮件中添加一些HTML。我尝试了以下方法。
vFromName = "someone"
vFromAddress = "someemail"
vTo = "recipient"
vSubject="someSubject"
vBodyofemail = "<html><table><tr><td><b>SomeText</b></td></tr></table></html>"

Call SendMail()

sub SendMail()
  'change to address of your own SMTP server
  strHost = "mail.internal.rouses.com"
  Set Mail = Server.CreateObject("Persits.MailSender")
  'enter valid SMTP host
  Mail.Host = strHost
  'From eMail address
  Mail.FromName = vFromName
  'From address
  Mail.From = vFromAddress 
  'To eMail address
  Mail.AddAddress vTo
  'message subject
  Mail.Subject = vSubject
  'message body
  Mail.Body = vBodyOfEmail
 Mail.Send
end sub

我该怎么做呢?我尝试过使用Mail.HtmlBody,但它也不起作用。邮件已发送,但我看到的只有HTML标签。


什么不起作用?电子邮件是否发送并且您可以看到HTML,还是根本没有收到电子邮件? - C. Ross
电子邮件已发送。不过我只看到了HTML标记……它们应该执行的操作并没有显示出来。 - Eric
3个回答

3
根据这个页面的说明,您需要将IsHTML标志设置为true。
strHTML = "Hello world"

Mail.IsHTML = True
Mail.Body = "<HTML><BODY><CENTER>" & strHTML & "</CENTER></BODY></HTML>"

这个有效了。我的问题在于这个函数出现在几个地方,而我正在编辑的不是正确的函数调用。谢谢。 - Eric
那么,纯文本(在同一条消息中)是如何定义的呢? - Arjan
1
你只需要将以下内容放在HTML字符串的末尾: & chr(10) & chr(13)& chr(10) & chr(13) _ 然后 &"plain-text"它就能正常工作了。 - Eric
嗯,我怀疑几个换行符并不能让Persits.MailSender生成一个MIME边界。你真的用几个客户端测试过吗?我可以想象,在关闭的</HTML>标签之后添加的任何文本都不会在HTML模式下显示,但我怀疑在将消息作为纯文本查看时,HTML版本将被隐藏... - Arjan

3
尝试在发送调用之前添加此行。
Mail.IsHTML = true

如果不设置,邮件对象将默认为标准文本,无论在正文属性中键入什么内容都会以文本形式呈现在电子邮件中。


这个有效了。我的问题是这个函数在几个地方,而我编辑的不是正确的函数调用。谢谢。C. Ross先回答了,所以我会给他答案。但我会给你+1。 - Eric
函数在几个地方出现,听起来有点像代码异味 :) - RSolberg

0

这不是对你的问题的答案,但是所有消息都不应该包含纯文本吗?没有纯文本,你肯定会得到更高的垃圾邮件分数。

(像我这样的人喜欢在你的HTML / CSS未被正确呈现时切换到纯文本。请参见{{link1:电子邮件客户端中CSS支持指南(2008)}}和{{link2:电子邮件标准项目}}的列表。)


但是你怎么将纯文本和HTML都放在Mail.Body属性中呢?我想知道Persits.MailSender是否是正确的选择。 - Arjan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接