ASP CLASSIC 中的邮件功能在正文中按字面意思发送 html 标签
Mail function in ASP CLASSIC sends literally html tags in the body
几周前,我在 ASP 经典代码中实现了一个邮件功能,但它会产生一些奇怪的标记/样式错误。
当使用 Mail 函数发送邮件时,它有时会按字面意义输出 html 标记,而语法是正确的。
见下图文字 html 输出:
正如您在下图中看到的,字体标签按字面显示,而它与其他列完全相同,显示正确。奇怪的是它有时会显示错误的字体,然后是一些随机的 <TR>
标签,然后是 1 个未显示的边框或 href
被弄乱了(点击 href 是生成一些随机的 %20 个字符,将鼠标悬停在它上面时它会显示它应该显示的 href)。
这是某种 ASP 经典邮件功能错误还是..?似乎也只有一个 html 标签按字面显示,而且从不超过 1 个。有时它也根本不生成任何文字标签(因此输出正确)。
邮件功能如下:
Function SendMail(sBody,sEmail)
set mail=server.createobject("Persits.MailSender")
Mail.Host = "spamfilter.myWebsite.com" ' Required
Mail.Port = 587 ' Optional. Port is 25 by default
Mail.From = "support@mywebsite.com"
Mail.FromName = "My Name"
sEmail = Uploader.Form("EMail")
Mail.AddAddress sEmail
Mail.Subject = "Tickets: " & FormSubject
Mail.Body = sBody
Mail.IsHTML = True
Mail.send
End Function
邮件正文是这样生成的:
sBody="<font face=""Verdana, Arial"" size=2 color=""black"">Geachte " & FormNaam & ",<br><br>"
sBody=sBody & "Recentelijk heeft u een ticket aangemaakt betreffende '<b>" & FormSubject & "</b>'.<br>"
sBody=sBody & "Wij zullen proberen uw ticket zo snel mogelijk te behandelen. Informatie over uw ticket kunt u hieronder terug vinden." & "<br><br>"
sBody=sBody & "<br>"
sBody=sBody & "<table>"
sBody=sBody & "<tr><th style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""#000080"">Verstuur datum</th><th style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""#000080"">Voor afdeling</th><th style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""#000080"">Soort ticket</th><th style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""#000080"">Onderwerp</th><th style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""#000080"">Ticket beschrijving</th></tr>"
sBody=sBody & "<tr bgcolor=""#BEC0F7"">"
sBody=sBody & "<td style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""black"">"
sBody=sBody & day(sToday)&"-" & month(sToday) & "-" & year(sToday)
sBody=sBody & "</td>"
sBody=sBody & "<td style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""black"">"
sBody=sBody & FormAutomatiseringClean
sBody=sBody & "</td>"
sBody=sBody & "<td style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""black"">"
sBody=sBody & FormProbleemClean
sBody=sBody & "</td>"
sBody=sBody & "<td style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""black"">"
sBody=sBody & FormOnderwerp
sBody=sBody & "</td>"
sBody=sBody & "<td style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""black"">"
sBody=sBody & FormBeschrijving
sBody=sBody & "</td></tr>"
sBody=sBody & "</table><br>"
Randomize
intLength = 100000
intRandom = CInt((Rnd * 10000)Mod intLength) + 1
'SELECT LAST ID OR ID OF THE SENDER/SUBJECT/SOMETHING UNIQUE
sBody=sBody & "De status van uw ingediende ticket kunt u bijhouden via de onderstaande knop:<br><br>"
sBody=sBody & "<table cellspacing=""0"" cellpadding=""0""><tr>"
sBody=sBody & "<td align=""center"" width=""200"" height=""35"" bgcolor=""#000091"" style=""-webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; color: #ffffff; display: block;"">"
sBody=sBody & "<a href=""http://mywebsite/ticket.asp?type=ticket&ticketid="&TicketID&"&validatie="&FormRecode&""" style=""font-size:16px; font-weight: bold; font-family: Helvetica, Arial, sans-serif; text-decoration: none; line-height:40px; width:100%; display:inline-block""><span style=""color: #FFFFFF"">Ticket Status</span></a><br><br>"
sBody=sBody & "</td></tr> </table><br>"
sBody=sBody & "Indien de knop het niet doet kunt u de volgende link volgen: http://mywebsite/ticket.asp?type=ticket&ticketid="&TicketID&"&validatie="&FormRecode&"<br><br>"
sBody=sBody & "With kind regards," & "<br><br>"
sBody=sBody & "My Company B.V." & "<br><br>"
sBody=sBody & "<font face=""Calibri, Arial"" style=""font-size:10pt;"" color=""black""><i>My company BV</i>" & "<br>"
sBody=sBody & "<font face=""Calibri, Arial"" style=""font-size:10pt;"" color=""gray"">GSome adress 22 | Some postal zip | Place" & "<br>"
sBody=sBody & "<font face=""Calibri, Arial"" style=""font-size:10pt;"" color=""gray"">Some text | Percel number 100" & "<br>"
sBody=sBody & "<font face=""Calibri, Arial"" style=""font-size:10pt;"" color=""black"">T: " & "<font face=""Verdana, Arial"" size=1 color=""gray"">0416-322792" & "<br>"
sBody=sBody & "<font face=""Calibri, Arial"" style=""font-size:10pt;"" color=""black"">F: " & "<font face=""Verdana, Arial"" size=1 color=""gray"">0416-322582" & "<br>"
sBody=sBody & "<font face=""Calibri, Arial"" style=""font-size:10pt;"" color=""black"">E: support@mysite.com" & "<br>"
sBody=sBody & "<font face=""Calibri, Arial"" style=""font-size:10pt;"" color=""black"">W: www.mysite.com" & "<br><br>"
err=SendMail(sBody,sEmail)
根据使用 Persits.MailSender
(As by @John 的经验,这是第 3 方组件,默认情况下不可用,内置替代方案是 CDO) 我总是发现如果 HTML 结构不正确 (即缺少标记终止符) 结果并不总是如预期的那样。
在这种特定情况下,它是一个 HTML 片段而不是真正的文档,因为它没有正确定义;
<html>
<head>
</head>
<body>
</body>
</html>
也没有终止使用 </font>
的 <font>
标签,我怀疑这是导致此问题的原因。
不过,我建议您编写 HTML 以在将来通过验证以避免此类问题。
几周前,我在 ASP 经典代码中实现了一个邮件功能,但它会产生一些奇怪的标记/样式错误。
当使用 Mail 函数发送邮件时,它有时会按字面意义输出 html 标记,而语法是正确的。
见下图文字 html 输出:
正如您在下图中看到的,字体标签按字面显示,而它与其他列完全相同,显示正确。奇怪的是它有时会显示错误的字体,然后是一些随机的 <TR>
标签,然后是 1 个未显示的边框或 href
被弄乱了(点击 href 是生成一些随机的 %20 个字符,将鼠标悬停在它上面时它会显示它应该显示的 href)。
这是某种 ASP 经典邮件功能错误还是..?似乎也只有一个 html 标签按字面显示,而且从不超过 1 个。有时它也根本不生成任何文字标签(因此输出正确)。
邮件功能如下:
Function SendMail(sBody,sEmail)
set mail=server.createobject("Persits.MailSender")
Mail.Host = "spamfilter.myWebsite.com" ' Required
Mail.Port = 587 ' Optional. Port is 25 by default
Mail.From = "support@mywebsite.com"
Mail.FromName = "My Name"
sEmail = Uploader.Form("EMail")
Mail.AddAddress sEmail
Mail.Subject = "Tickets: " & FormSubject
Mail.Body = sBody
Mail.IsHTML = True
Mail.send
End Function
邮件正文是这样生成的:
sBody="<font face=""Verdana, Arial"" size=2 color=""black"">Geachte " & FormNaam & ",<br><br>"
sBody=sBody & "Recentelijk heeft u een ticket aangemaakt betreffende '<b>" & FormSubject & "</b>'.<br>"
sBody=sBody & "Wij zullen proberen uw ticket zo snel mogelijk te behandelen. Informatie over uw ticket kunt u hieronder terug vinden." & "<br><br>"
sBody=sBody & "<br>"
sBody=sBody & "<table>"
sBody=sBody & "<tr><th style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""#000080"">Verstuur datum</th><th style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""#000080"">Voor afdeling</th><th style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""#000080"">Soort ticket</th><th style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""#000080"">Onderwerp</th><th style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""#000080"">Ticket beschrijving</th></tr>"
sBody=sBody & "<tr bgcolor=""#BEC0F7"">"
sBody=sBody & "<td style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""black"">"
sBody=sBody & day(sToday)&"-" & month(sToday) & "-" & year(sToday)
sBody=sBody & "</td>"
sBody=sBody & "<td style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""black"">"
sBody=sBody & FormAutomatiseringClean
sBody=sBody & "</td>"
sBody=sBody & "<td style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""black"">"
sBody=sBody & FormProbleemClean
sBody=sBody & "</td>"
sBody=sBody & "<td style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""black"">"
sBody=sBody & FormOnderwerp
sBody=sBody & "</td>"
sBody=sBody & "<td style=""border: 1px solid black;""><font face=""Verdana, Arial"" size=2 color=""black"">"
sBody=sBody & FormBeschrijving
sBody=sBody & "</td></tr>"
sBody=sBody & "</table><br>"
Randomize
intLength = 100000
intRandom = CInt((Rnd * 10000)Mod intLength) + 1
'SELECT LAST ID OR ID OF THE SENDER/SUBJECT/SOMETHING UNIQUE
sBody=sBody & "De status van uw ingediende ticket kunt u bijhouden via de onderstaande knop:<br><br>"
sBody=sBody & "<table cellspacing=""0"" cellpadding=""0""><tr>"
sBody=sBody & "<td align=""center"" width=""200"" height=""35"" bgcolor=""#000091"" style=""-webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; color: #ffffff; display: block;"">"
sBody=sBody & "<a href=""http://mywebsite/ticket.asp?type=ticket&ticketid="&TicketID&"&validatie="&FormRecode&""" style=""font-size:16px; font-weight: bold; font-family: Helvetica, Arial, sans-serif; text-decoration: none; line-height:40px; width:100%; display:inline-block""><span style=""color: #FFFFFF"">Ticket Status</span></a><br><br>"
sBody=sBody & "</td></tr> </table><br>"
sBody=sBody & "Indien de knop het niet doet kunt u de volgende link volgen: http://mywebsite/ticket.asp?type=ticket&ticketid="&TicketID&"&validatie="&FormRecode&"<br><br>"
sBody=sBody & "With kind regards," & "<br><br>"
sBody=sBody & "My Company B.V." & "<br><br>"
sBody=sBody & "<font face=""Calibri, Arial"" style=""font-size:10pt;"" color=""black""><i>My company BV</i>" & "<br>"
sBody=sBody & "<font face=""Calibri, Arial"" style=""font-size:10pt;"" color=""gray"">GSome adress 22 | Some postal zip | Place" & "<br>"
sBody=sBody & "<font face=""Calibri, Arial"" style=""font-size:10pt;"" color=""gray"">Some text | Percel number 100" & "<br>"
sBody=sBody & "<font face=""Calibri, Arial"" style=""font-size:10pt;"" color=""black"">T: " & "<font face=""Verdana, Arial"" size=1 color=""gray"">0416-322792" & "<br>"
sBody=sBody & "<font face=""Calibri, Arial"" style=""font-size:10pt;"" color=""black"">F: " & "<font face=""Verdana, Arial"" size=1 color=""gray"">0416-322582" & "<br>"
sBody=sBody & "<font face=""Calibri, Arial"" style=""font-size:10pt;"" color=""black"">E: support@mysite.com" & "<br>"
sBody=sBody & "<font face=""Calibri, Arial"" style=""font-size:10pt;"" color=""black"">W: www.mysite.com" & "<br><br>"
err=SendMail(sBody,sEmail)
根据使用 Persits.MailSender
(As
在这种特定情况下,它是一个 HTML 片段而不是真正的文档,因为它没有正确定义;
<html> <head> </head> <body> </body> </html>
也没有终止使用 </font>
的 <font>
标签,我怀疑这是导致此问题的原因。
不过,我建议您编写 HTML 以在将来通过验证以避免此类问题。