Classic ASP通过CDO发送含链接邮件时出现VBScript编译错误求助
解决Classic ASP CDO邮件HTMLBody的VBScript编译错误
这个800a0401编译错误我太熟了,大多是语句语法不完整导致的,结合你的代码来看,主要有两个可能的原因和对应的解决办法:
原因1:多行代码续行未加下划线
如果你的代码是分成多行写的(比如为了可读性换行),VBScript要求必须在每行末尾添加下划线_来表示语句还没结束。比如原来的代码如果是:
ObjSendMail.HTMLBody = "<h2 align=center>" & "<a href=http://example.co.uk/Uploaded_Files/" & Request.Form("filenamex") & ">View File</a>"
就会触发这个错误,改成下面这样就行:
ObjSendMail.HTMLBody = "<h2 align=""center"">" & _ "<a href=""http://example.co.uk/Uploaded_Files/" & Request.Form("filenamex") & """>View File</a>"
这里我顺便把HTML属性的引号也修正了——HTML里的属性值必须用引号包裹,VBScript里用两个双引号""表示一个实际的双引号。
原因2:HTML属性未加引号+字符串拼接冲突
另一种更简洁的写法是用单引号包裹HTML的属性值,这样在VBScript的双引号字符串里不需要转义,既符合HTML规范,也不会触发VBScript的语法错误:
ObjSendMail.HTMLBody = "<h2 align='center'>" & "<a href='http://example.co.uk/Uploaded_Files/" & Request.Form("filenamex") & "'>View File</a>"
额外提示:避免HTML注入问题
最后提醒一句,Request.Form("filenamex")是用户输入的内容,直接拼到HTML里可能存在注入风险,最好用Server.HTMLEncode()转义一下特殊字符:
Dim safeFileName safeFileName = Server.HTMLEncode(Request.Form("filenamex")) ObjSendMail.HTMLBody = "<h2 align='center'>" & "<a href='http://example.co.uk/Uploaded_Files/" & safeFileName & "'>View File</a>"
内容的提问来源于stack exchange,提问作者user6461738
相关产品推荐
相关产品推荐

