2008年12月21日星期日

Z-Blog发送邮件插件的修改

  先前我曾经介绍过一个Z-Blog发送邮件插件的插件,可以用于发送邮件到邮件列表,用于邮件订阅博客。其实这个插件还有一个功能,就是自动同步日志到Google Blogspot和MSN Live Spaces上面的博客。

  由于Google Blogspot和MSN Live Spaces都支持电子邮件的发布,因此将发布邮件地址加入到插件的收信人,并以逗号分隔即可,经过我的测试,原始的程序发送过程中,中文会出现乱码,我将该插件代码修改了一下,经过我的实际测试,发送到Blogspot上的邮件已经没有乱码了,以下是修改后的include.asp文件,请替换修改即可。

Const MailPost_MailTo="email1@blogger.com,email2@spaces.live.com"
Const MailPost_MailFrom="webmaster@williamlong.info"
Const MailPost_SmtpServer="127.0.0.1"
Const MailPost_uname=""
Const MailPost_upass=""
Dim MailPost_objArticle
Dim isNew
'注册插件
Call RegisterPlugin("MailPost","ActivePlugin_MailPost")
'具体的接口挂接
Function ActivePlugin_MailPost()
 '挂上接口
 Call Add_Action_Plugin("Action_Plugin_ArticlePst_Begin","Call MailPost_Main()")
End Function
Function MailPost_getArticle(ByRef objArticle)
 Set MailPost_objArticle=objArticle
 If MailPost_objArticle.ID = "0" Then
  isNew=True
 Else
  isNew=False
 End If
End Function
Function MailPost_gotoPingTB()
 If isNew Then
 Call Send_Email(MailPost_SmtpServer,MailPost_MailFrom,MailPost_uname,MailPost_upass,MailPost_MailTo,"MailPost",MailPost_objArticle.title,MailPost_objArticle.content & " ")
 End If
End Function
Function MailPost_Main()
 Call Add_Filter_Plugin("Filter_Plugin_PostArticle_Core","MailPost_getArticle")
 Call Add_Action_Plugin("Action_Plugin_ArticlePst_Succeed","Call MailPost_gotoPingTB()")
End Function
Function Send_Email(smtpHost,FromEmail,smtpUser,smtpPass,mailTo,FromName,subject,content)
 '处理收件人
 If InStr(mailTo,",")<1 Then
  mailTo=mailTo &","
 End If
 Dim tos,i
 tos = Split(mailTo,",")
 Dim jmail
 Set jmail = Server.CreateObject("JMAIL.Message")
 jmail.silent = true
 jmail.logging = true
 'jmail.ContentType = "text/html"
 jmail.Charset = "GB2312" 
 jmail.ContentTransferEncoding = "base64"
 Jmail.ISOEncodeHeaders = True
 For i = LBound(tos) To UBound(tos)
  If tos(i)<>"" Then jmail.AddRecipient tos(i)
 Next
 jmail.From = FromEmail
 jmail.FromName = FromName
 jmail.Subject = subject
 jmail.HTMLBody = content
 jmail.Priority = 1
 jmail.MailServerUserName = smtpUser
 jmail.MailServerPassword = smtpPass
 jmail.Send(smtpHost)
 jmail.Close()
End Function