|
近期,有很多用户反应使用Jmail组件发送邮件的时候,系统提示发送成功,但实际却无法收到。
经过对程序的检查和一段时间的实验,现给出如下改进方案:
打开inc/Email_Cls.asp文件,在大约151行附近找到:Obj.Silent = True
将其改为Obj.Silent = False
注意:
这个更改可以让Jmail在发信失败的时候报错,以便查找错误原因。
如果收到错误消息,可以尝试“百度”或“GOOGLE”一下,或许有不小的收获哦!
无论是使用Jmail还是其他组件发信,都不能保证信件肯定能发送成功,这和网络状况等很多原因都有关系(OE不能收发信的情况也经常遇到嘛)。
附:Jmail组件发信设置注意事项:
1、首先要确定你所使用的邮件支持SMTP发信,即可以使用微软自带的Outlook Express收发信。
2、确定你的后台-论坛基本设置-“论坛管理员Email”一项要设置为你发信所使用的Email地址(一般的免费邮箱都会验证此项)。
3、确定服务器支持Jmail组件,SMTP服务器填写正确,发信用户名和密码填写正确。
4、注意发信用户名不是邮件地址,用户名可以与邮件地址相同,也可以不同(如163就不包括@符号及后面的部分),具体信息可以咨询邮件服务提供商。
(常见的错误The message was undeliverable. All servers failed to receive the message就可能是由于3和4没有设置正确导致的)
5、注意发信的地址、标题和内容中请不要含有可能被过滤的词语,如字母AD的组合(用来表示此邮件是一封广告邮件)等。许多服务器上都装有信息过滤系统和防垃圾邮件的程序,这些程序可能会因此而阻止信件到达收件人的邮箱
发送成功!发送成功!发送成功!发送成功!发送成功!发送成功!发送失败!原因:The message was undeliverable. All servers failed to receive the message发送失败!
错误解决
在admin/sendmail.asp文件中找到下面这一段:
Set DvEmail = New Dv_SendMail
DvEmail.SendObject = Cint(Dvbbs.Forum_Setting(2)) \'设置选取组件 1=Jmail,2=Cdonts,3=Aspemail
DvEmail.ServerLoginName = Dvbbs.Forum_info(12) \'您的邮件服务器登录名
DvEmail.ServerLoginPass = Dvbbs.Forum_info(13) \'登录密码
DvEmail.SendSMTP = Dvbbs.Forum_info(4) \'SMTP地址
DvEmail.SendFromEmail = Dvbbs.Forum_info(5) \'发送来源地址
DvEmail.SendFromName = Dvbbs.Forum_info(0) \'发送人信息
For i=0 To Ubound(SQL,2)
If DvEmail.ErrCode = 0 Then
DvEmail.SendMail SQL(2,i),EmailTopic,EmailBody \'执行发送邮件
If Not DvEmail.ErrCode = 0 Then
ErrMsg = DvEmail.Description
Dvbbs_Error()
Exit Sub
End If
Else
ErrMsg = DvEmail.Description
Dvbbs_Error()
Exit Sub
End If
ii=ii+1
Response.Write \"\"
Response.Flush
LastUserID = SQL(0,i)
Next
改为:
Set DvEmail = New Dv_SendMail
DvEmail.SendObject = Cint(Dvbbs.Forum_Setting(2)) \'设置选取组件 1=Jmail,2=Cdonts,3=Aspemail
DvEmail.ServerLoginName = Dvbbs.Forum_info(12) \'您的邮件服务器登录名
DvEmail.ServerLoginPass = Dvbbs.Forum_info(13) \'登录密码
DvEmail.SendSMTP = Dvbbs.Forum_info(4) \'SMTP地址
DvEmail.SendFromEmail = Dvbbs.Forum_info(5) \'发送来源地址
DvEmail.SendFromName = Dvbbs.Forum_info(0) \'发送人信息
ErrMsg=\"\"
For i=0 To Ubound(SQL,2)
If DvEmail.ErrCode = 0 Then
DvEmail.SendMail SQL(2,i),EmailTopic,EmailBody \'执行发送邮件
If Not DvEmail.ErrCode = 0 Then
ErrMsg = DvEmail.Description
End If
Else
ErrMsg = DvEmail.Description
End If
ii=ii+1
Response.Write \"\"
Response.Flush
LastUserID = SQL(0,i)
Next
If ErrMsg <> \"\" Then
Response.Write(\"发送过程中出现错误:\"&ErrMsg)
Response.Flush
ErrMsg=\"\"
End If
则发送过程中不会对错误进行处理,在发送过程完成以后才会显示错误信息。 |
|