庆典新闻图片订阅系统
2006
年
04
月
10
日草稿
2006
年
04
月
20
日修改
原计划是在新闻写入数据库后随即采用自动发送订阅邮件,但是测试的时候发现发信的效率相当低下,而且出错率相当高(虽然在订阅的系统中虽然对邮箱格式进行了控制,但是里面还是有不合乎规范的,或是说里面有些邮件地址根本就不存在)。整个系统速度会受到严重影响。等订阅邮件发送,再添加下一篇新闻,这显然不现实。
后来考虑的是单独做个发送系统,这几天(4月13日-4月15日)订阅量已经超过我的想象了。最开始设计这个订阅时,只是为了提供一个交流和沟通的平台,而现在近100的订阅量,已使得用人工来处理不再现实。必须自动!在4月18日我停止了订阅。(同时停止服务的还有庆典专用的BBS)。
整个系统分为订阅、发送两部分。订阅的很简单,就不说了。
关键是发送部分。我采用的是Jmail.Message
取代原来STMPMAIL的,感觉还可以。发送的页面一个就够了。最开始是这样打算了,文章从数据库读出,然一篇在订阅人的表中读出邮箱循环发送。不过从投入使用的效果来看,这个产生的意外太多了,随时有发送不成功的情况。没有任何保证的。现在让一次性搞定所有,会得不偿失,系统超时(虽然修改了TIMEOUT)。以10个用户为一组,亦或20个,对用户进行分组后发送。文章也一次读一篇来控制似乎好多了。
最开始邮件是以文本方式发送的。这时(4月14日前后)我做的也只是发送订阅的确认信。但是之后发现放在数据库的新闻全是以HTML格式存放的。 测试后发现收到的全是HTML源码。由于对jmail不熟悉,马上搜索查找相关的文档。最后在AJIANG 那里看到《w3 JMail 4.3中文用户手册》找到解决办法,邮件采用HTML方式发送(在126邮件发送系统右上侧有个“编辑源码”的复选框), jmail.AppendHTML追加HTML正文给邮件。
不知道有没有其他更好的方法。
---------------------------
帖出部分代码(考虑安全因素,对代码稍作了处理)
====
set rs=Conn.execute ("select .......... from .......")
Do Until rs.EOF
Do Until rs.EOF
fromname= "往往
"
frommail= "swpunews#126.com"
toname= rs("...")
tomail= rs("...")
frommail= "swpunews#126.com"
toname= rs("...")
tomail= rs("...")
mailtitle= rsnews("title").
'=============== 发 信
================
dim JMail
set JMail=server.CreateObject("Jmail.message")
dim JMail
set JMail=server.CreateObject("Jmail.message")
JMail.Silent=true
JMail.Charset = "gb2312"
JMail.FromName = fromname
JMail.from = frommail
JMail.AddRecipient tomail,toname
JMail.Subject = mailtitle
.
jmail.AppendHTML(sendmailbody & "<br>----------<br>欢迎您使用::西南石油大学揭牌庆典专题网站::庆典新闻/图片订阅系统,我们会在第一时间为您提供最新的庆典动态,综合新闻,图片资讯。<br><br>本邮件采用自动发送,有任何疑问可以直接回复。 ")
JMail.MailServerUserName = mailserverloginname
JMail.MailServerPassWord = mailserverloginpass
JMail.MailDomain = mailuserdomain
sendok=JMail.send(mailserver)
if sendok then
msg=msg & "订阅号为"&rs("...")&"即邮箱为:"&rs(".....")&"的邮件已经成功发送了 <br>"
else
msgerr=msgerr & "订阅号为"&rs(".....")&"即邮箱为:"&rs("....")&"的邮件发送失败 <br>"
end if
rs.MoveNext
Loop
JMail.Charset = "gb2312"
JMail.FromName = fromname
JMail.from = frommail
JMail.AddRecipient tomail,toname
JMail.Subject = mailtitle
.
jmail.AppendHTML(sendmailbody & "<br>----------<br>欢迎您使用::西南石油大学揭牌庆典专题网站::庆典新闻/图片订阅系统,我们会在第一时间为您提供最新的庆典动态,综合新闻,图片资讯。<br><br>本邮件采用自动发送,有任何疑问可以直接回复。 ")
JMail.MailServerUserName = mailserverloginname
JMail.MailServerPassWord = mailserverloginpass
JMail.MailDomain = mailuserdomain
sendok=JMail.send(mailserver)
if sendok then
msg=msg & "订阅号为"&rs("...")&"即邮箱为:"&rs(".....")&"的邮件已经成功发送了 <br>"
else
msgerr=msgerr & "订阅号为"&rs(".....")&"即邮箱为:"&rs("....")&"的邮件发送失败 <br>"
end if
rs.MoveNext
Loop
====