ASP中实现定时发送邮件的代码分享
现在的这个项目需要用asp做定时邮件发送,好多人都说asp没有这样的功能。
其实我在以前的一篇文章已经做过详细的解释了,不过那个是定时任务,基本思路是一样的。
参考:ASP中实现执行定时任务的方法
这里我们使用JMail组件的方式来做,邮件的内容为单个网页,可以自由定制。
下面我们看看定时邮件发送的代码:
FunctiongetHTTPPage(url) dimobjXML setobjXML=createobject("MSXML2.SERVERXMLHTTP.3.0") '调用XMLHTTP组件,测试空间是否支持XMLHTTP objXML.open"GET",url,false'false表示以同步的方式获取网页代码,了解什么是同步?什么是异步? objXML.send()'发送 getHTTPPage=bBytesToBstr(objXML.responseBody)'返回信息,同时用函数定义编码 setobjXML=nothing'关闭 EndFunction FunctionbBytesToBstr(body) dimobjstream setobjstream=CreateObject("adodb.stream")'//调用adodb.stream组件 objstream.Type=1 objstream.Mode=3 objstream.Open objstream.Writebody objstream.Position=0 objstream.Type=2 objstream.Charset="GB2312" '转换原来默认的UTF-8编码转换成GB2312编码,否则直接用XMLHTTP调用有中文字符的网页得到的将是乱码 bBytesToBstr=objstream.ReadText objstream.Close setobjstream=nothing endFunction SubSendAction(subject,mailaddress,Tomail,sender,content,fromEmail,Fromer,UserName,PassWord) SetoJmail=CreateObject("Jmail.Message") oJmail.Logging=false oJmail.Silent=True oJMail.Priority=3 oJmail.FromName=Fromer oJmail.From=FromEmail oJmail.CharSet="gb2312" oJmail.MailServerUserName=UserName oJmail.MailServerPassWord=PassWord oJmail.ContentTransferEncoding="base64" oJMail.HTMLBody=content'邮件内容 oJMail.Body=content'"我们的邮件采用了HTML格式,但是您的邮件查看软件可能不支持" oJmail.AddRecipientTomail'收件人地址 oJmail.Subject=subject'标题 oJmail.Send(mailaddress) EndSub dimSubject,MailAddress,ToEmail,Sender,FromEmail,Fromer,PassWord,oJmail,usernames,tomail dimusername,useremail dimpass,content dimmailname,mailpass,mailform,mailsmtp mailname="xxx"'smtp邮箱的账号 mailpass="xxx"'smtp邮箱的密码 mailform="xxx"'smtp邮箱的署名 mailsmtp="xxx"'smtp邮箱的smtp MailAddress=mailsmtp':发件服务器的地址,如smtp.163.com Sender=title' :发件人姓名 Content=content' :邮件内容 FromEmail=mailname' :发件人邮件地址 Fromer=title ':发件人姓名 UserName=mailform' :发件邮件帐号 PassWord=mailpass' :发件邮件密码 '需要指定的内容 content=getHTTPPage("https://www.nhooo.com/") Subject="标题" ':邮件标题 Tomail="xxx" ':收件人邮件地址 callSendAction(subject,mailaddress,Tomail,sender,content,fromEmail,Fromer,UserName,PassWord)
将这个文件设置为XXX.VBS以后放到数据库定时执行就可以了。
如果有什么不懂的可以直接问MK。