ASP CLASSIC中的邮件函数在正文中按字面意思发送html标记
几周前,我在ASP经典代码中实现了一个邮件函数,但它生成了一些奇怪的标记/样式错误 当使用mail函数发送邮件时,有时会在语法正确的情况下逐字输出html标记 文字html输出见下图: 正如您在下面的图片中所看到的,字体标记按字面意思显示,而它与其他列完全相同,显示正确。奇怪的是,它有时会显示错误的字体,然后是一些随机的ASP CLASSIC中的邮件函数在正文中按字面意思发送html标记,html,email,asp-classic,Html,Email,Asp Classic,几周前,我在ASP经典代码中实现了一个邮件函数,但它生成了一些奇怪的标记/样式错误 当使用mail函数发送邮件时,有时会在语法正确的情况下逐字输出html标记 文字html输出见下图: 正如您在下面的图片中所看到的,字体标记按字面意思显示,而它与其他列完全相同,显示正确。奇怪的是,它有时会显示错误的字体,然后是一些随机的标记,然后是一个没有显示的边框,或者是一个乱七八糟的href(点击href会生成一些随机的%20个字符,当鼠标悬停在它上面时,它会显示它应该显示的href) 这是某种ASP经典
标记,然后是一个没有显示的边框,或者是一个乱七八糟的href
(点击href会生成一些随机的%20个字符,当鼠标悬停在它上面时,它会显示它应该显示的href)
这是某种ASP经典邮件功能错误还是。。?看起来只有一个html标签会被逐字显示,而且不会超过1个。有时它也根本不生成文字标记(因此它输出正确) 邮件功能如下:
函数SendMail(sBody,sEmail)
设置mail=server.createobject(“perits.mailssender”)
Mail.Host=“spamfilter.myWebsite.com”为必填项
Mail.Port=587'可选。端口默认为25
Mail.From=”support@mywebsite.com"
Mail.FromName=“我的名字”
sEmail=Uploader.Form(“电子邮件”)
Mail.AddAddress语义邮件
Mail.Subject=“Tickets:&FormSubject
Mail.Body=sBody
Mail.IsHTML=True
邮寄
端函数
邮件正文就是这样生成的:
sBody=“Geachte”&FormNaam&,
“
sBody=sBody和“recentelik heeft u een ticket aangemaakt betreffende”和FormSubject和“。
”
sBody=sBody&“我们的票是由斯内尔·莫盖利克(snel Mogelik)和贝汉德伦(behandelen)提供的。我们的票上的信息是由你的经纪人提供的。”&“
”
sBody=sBody&“
”
sBody=sBody&“
sBody=sBody和“Verstuur Datumvo或Afdeling Soort Ticket DerWerpticket Beschrijing”
sBody=sBody&“
sBody=sBody&“
sBody=sBody和day(sToday)&“-”和month(sToday)&“-”和year(sToday)
sBody=sBody&“
sBody=sBody&“
sBody=sBody&Formatomating自动清洁
sBody=sBody&“
sBody=sBody&“
sBody=sBody&formproblemclean
sBody=sBody&“
sBody=sBody&“
sBody=sBody和formondererp
sBody=sBody&“
sBody=sBody&“
sBody=sBody和formbeschrijing
sBody=sBody&“
sBody=sBody&“
”
随机化
intLength=100000
内部域=CInt((Rnd*10000)Mod intLength)+1
'选择最后一个ID或发件人/主题/唯一对象的ID
sBody=sBody和“通过onderstaande knop在bijhouden买机票:
”
sBody=sBody&“
sBody=sBody&“
sBody=sBody&“
”
sBody=sBody&“
”
sBody=sBody和“Indien de knop het niet dot kunt u de volgende link volgen:http://mywebsite/ticket.asp?type=ticket&ticketid=&TicketID&&validatie=“&FormRecode&”
“
sBody=sBody&“致以亲切的问候,&”
“
sBody=sBody和“我的公司B.V.”和“
”
sBody=sBody和“我的公司BV”和“
”
sBody=sBody&“GSome address 22 |一些邮政拉链|地方”&“
”
sBody=sBody&“一些文本| Percel编号100”&“
”
sBody=sBody&“T:&”0416-322792&“
”
sBody=sBody&“F:&”0416-322582&“
”
sBody=sBody和“E:support@mysite.com“&”
”
sBody=sBody&“W:www.mysite.com”和“
”
err=SendMail(sBody,sEmail)
根据使用的经验(因为这是一个第三方组件,默认情况下不可用,内置替代品是CDO),我总是发现如果HTML的结构不正确(即缺少标记终止符),结果将不会总是如预期的那样
在这种特殊情况下,它是一个HTML片段,而不是一个真正的文档,因为它没有正确定义
<html>
<head>
</head>
<body>
</body>
</html>
也没有使用
终止
标记,我怀疑这是导致此问题的原因
不过,我建议您以后编写通过验证的HTML以避免此类问题。无论Persits邮件库使用何种编码方法,都可能存在某种边界问题,请尝试在节之间添加一些空白,例如vbCRLF。是否有任何数据包含任何<或>,如果是,请确保这些都转义为,而且很简单,您没有正确终止标记,因此
perits.mailssender
将其视为文本。没有一个
标记以
正确终止。您还没有构造有效的HTML文档(没有
或
标记)。上的所有示例都显示完全限定的HTML结构,因此我将从HTML验证开始。谢谢大家。根据反馈更新了结构,现在看来它正在运行。“这是某种ASP经典邮件功能错误吗”-如果您不知道,Persits Mailsender是第三方组件,您必须购买并安装。如果您需要从其他服务器发送电子邮件,请查看CDO。