日期:2008-12-30  浏览次数:21107 次

  ASP实现邮件的发送需要组件来支持,可以使用微软自带的CDO或者用第三方组件(如JMail、ASPMail)来发送邮件。微软自带的发邮件组件可以在添加WINDOWS组件中找到,关于第三方组件的获得方法自己去网上搜索,我就不多说了。不管是自带的组件或第三方组件我们都要写不同的程序,随着服务器支持组件的不同,我们要开发不同的程序,感觉有点麻烦,虽然写个发mail的程序是很容易的事。那我们能否写个class支持一些常用的组件,这样我们只要一个程序,调用这个class就行了。不用写多个程序了,维护起来应该也比较方便吧!好了,不多说废话了,下面是我写的class的源码,感兴趣的人可以玩玩。由于本人水平有限,写得很烂,愿意进一步完善的人可以把它写得好一些,由于没有什么条件来试,里面估计有错误存在,在使用如出现问题,希望能通知我加以改正,谢谢email:cjj8110@hotmail.com。

  cls_Email.ASP的源码:
<%Option Explicit
'#########声明变量########

'以下定义邮件组件类型常量
Const SWEmail_JMail43 = 0
Const SWEmail_JMail = 1
Const SWEmail_ASPMail = 2
Const SWEmail_CDO = 3

'本类支持的组件数,由于数组的下标是从0开始的,所以实际是支持3个组件
Const SWEmail_intMailobjects = 3

'邮件组件数组
ReDim SWEmail_aryMailObject(SWEmail_intMailobjects,2)
'JMail 4.3
SWEmail_aryMailObject(0,0) = "JMail.Message" '创建组件的字符串,此字符串固定
SWEmail_aryMailObject(0,1) = SWEmail_JMail43 '组件的类型,自定义

'JMail 早期版本
SWEmail_aryMailObject(1,0) = "JMail.SmtpMail"
SWEmail_aryMailObject(1,1) = SWEmail_JMail

'ASP Mail
SWEmail_aryMailObject(2,0) = "Persits.MailSender"
SWEmail_aryMailObject(2,1) = SWEmail_ASPMail

'微软自带的组件
SWEmail_aryMailObject(3,0) = "CDONTS.NewMail"
SWEmail_aryMailObject(3,1) = SWEmail_CDO


'记录邮件组件创建字符串
Dim SWEmail_strMailObject
'邮件组件的类型
Dim SWEmail_intMailType
'邮件组件的名称(描述)
Dim strMailName
'邮件附件信息
Dim SWEmail_strFiles
SWEmail_strFiles = ""

Dim SWEmail_strFrom '发件人Email地址
Dim SWEmail_strFromName '发件人姓名
Dim SWEmail_strTo '收件人Email地址
Dim SWEmail_strSubject '邮件主题
Dim SWEmail_strBody '邮件内容

Dim SWEmail_strBCC '密送人Email地址
Dim SWEmail_strCC '抄送人Email地址

Dim SWEmail_strSMTPServer '邮件服务器地址
Dim SWEmail_intSpeed '邮件等级
Dim SWEmail_blnIsHTML '是否HTML邮件,True为HTML邮件,FASLE为纯文本邮件
Dim SWEmail_strUserName '身份验证时输入的用户名
Dim SWEmail_strPassword '身份验证时输入的密码

'#########声明结束########


'#########数据初始化########

'默认为普通
SWEmail_intSpeed = 1
'默认为HTML邮件
SWEmail_blnIsHTML = True
'设置默认发件服务器地址
'SWEmail_strSMTPServr = "SMTP.163.com"
'设置默认组件字符串
'SWEmail_strMailObject = "JMail.Message"

'#########初始化结束########


Class SWEmail
'检测服务支持的邮件组件
Sub Check(sFrom,sFromName,sTo,sSubject,sBody)
Dim i,objTest,sReturn
Response.Write("<table border=""0"" cellspacing=""1"" cellpadding=""0"" bgcolor=""#000000"" align=""center"" width=""85%"">" & vbcrlf)
Response.Write(" <tr align=""center"" height=""30"" bgcolor=""#FFFFFF"">" & vbcrlf)
Response.Write(" <td width=""33%"">Name</td>" & vbcrlf & " <td>Enable</td>" & vbcrlf & " <td>IsSent</td>" & vbcrlf)
Response.Write(" </tr>" & vbcrlf)
For i = 0 To SWEmail_intMailobjects
On Error Resume Next
Set objTest = CreateObject(CStr(SWEmail_aryMailObject(i,0)))
Response.Write(" <tr align=""center"" height=""25"" bgcolor=""#FFFFFF"">" & vbcrlf)
Response.Write(" <td>" & SWEmail_aryMailObject(i,0) & "</td>" & vbcrlf)
If err.Number <> 0 Then '查看错误原因
On Error Goto 0
Response.Write( " <td>No</td>" & vbcrlf)
Response.Write( " <td>No</td>" & vbcrlf)
Else
SWEmail_strMailObject = SWEmail_aryMailObject(i,0)
SWEmail_intMailType = SWEmail_aryMailObject(i,1)
Response.Write( " <td>Yes</td>" & vbcrlf)
sReturn = Send(sFrom,sFromName,sTo,sSubject,sBody)
If (sReturn = True) Then
Res