W3 JMail 邮件组件是Dimac公司开发的用来完成邮件的发送、接收、加密和集群传输等工作的。w3 Jmail组件是国际最为流行的邮件组件之一,当今世界上绝大部分ASP程序员都在使用w3 Jmail组件构建邮件发送系统,那是因为w3 Jmail组件使用了新的内核技术,使其更加可靠和稳定。一、下面向读者介绍w3 Jmail4.3组件的新特性:1、 w3 Jmail4.3组件重新设计了其内
W3 JMail 邮件组件是Dimac公司开发的用来完成邮件的发送、接收、加密和集群传输等工作的。w3 Jmail组件是国际最为流行的邮件组件之一,当今世界上绝大部分ASP程序员都在使用w3 Jmail组件构建邮件发送系统,那是因为w3 Jmail组件使用了新的内核技术,使其更加可靠和稳定。
一、下面向读者介绍w3 Jmail4.3组件的新特性:
1、 w3 Jmail4.3组件重新设计了其内部结构——使用Message对象代替原来的单一对象Jmail.smtpmail发送邮件;
2、 w3 Jmail4.3组件一共有十多个对象(后面将详细介绍)——这些对象中,绝大多数是针对Jmail.Message对象操作的;
3、 支持从POP3邮件服务器收取邮件;
4、 支持加密邮件的传输;
5、 快速发送,一次会话就完成邮件发送;
6、 还有一个特性就是可以使用w3 Jmail4.3组件的集群发送功能一次发送成千上万个邮件,还可以通过邮件合并(mailmerge)对象来个性化邮件。
二、Jmail邮件组件的安装及卸载:
1、 安装
跟使用别个组件一样,在使用Jmail邮件组件之前要先安装或注册该组件Jmail.dll。具体注册方法,是先把Jmail.dll文件拷贝到硬盘的某一目录下(如C:\Jmail\Jmail.dll),然后执行命令Regsvr32 C:\Jmail\Jmail.dll即可。
2、 卸载
执行命令Regsvr32 /U Jmail.dll即可。
三、详细介绍W3 Jmail组件的对象(12个):
1、.POP3对象
属性(或方法)
|
说明
|
Connect(Username,PassWord,Server,Port)
|
连接POP3服务器,断口可选,默认110。
|
DeleteMessages()
|
从邮件服务器上删除所有邮件。
|
DeleteSingleMessage(MessageID)
|
从邮件服务器上删除由MessageID指定的邮件。
|
Disconnect()
|
关闭跟邮件服务器的连接。
|
DownloadHeaders()
|
从邮件服务器上读取所有的邮件头并传递给Messages集合。
|
DownloadMessages()
|
从邮件服务器读取所有邮件。
|
DownloadSingleHeader(MessageID)
|
从邮件服务器读取指定的邮件头并传递给Messages集合。
|
DownloadUnreadMessages()
|
从邮件服务器上读取所有未读邮件。
|
2、.Messages对象
属性(或方法)
|
说明
|
Clear()
|
清除集合中的所有内容,并不会删除邮件服务器上的任何邮件。
|
Count():Integer
|
返回集合中记录的数目:I=Messages.Count
|
Item(Index):Pointer
|
返回一个Message对象。Set oMsg=Messages.Item(0)
|
3、.Message对象
属性(或方法)
|
说明
|
AddAttachment(FileName,isInline,ContentType):String
|
给邮件添加一个文件型的附件。isInline设置为True时,添加的这个附件就是一个可嵌入的附件。
|
AddCustomAttachment(FileName,Data,isInline):String
|
给邮件添加一个自定义类型的附件。
|
AddHeader(Xheader,Value)
|
给邮件添加一个自定义邮件头X-Header。
|
AddNativeHeader(Header,Value)
|
给邮件添加一个邮件头。
|
AddRecipient(emailAddress,recipientName,PGPKey)
|
给邮件添加一个收件人。RecipientName和PGPKey是可选项,RecipientName为收件人姓名,PGPKey给邮件加密。
|
AddRecipientBCC(emailAddress,PGPKey)
|
添加一个邮件暗送人(BCC)地址。
|
AddRecipientCC(emailAddress,recipientName,PGPKey)
|
给邮件添加一个邮件抄送人(CC)地址。
|
AddURLAttachment(bstrURL,bstrAttachAs,isInline,bstrAuth):String
|
从指定的URL下载文件并添加为邮件附件。参数bstrAttachAs是用来更改添加为邮件附件的文件名。
|
AppendBodyFromFile(FileName)
|
清除邮件正文,并把指定文件的内容作为邮件正文。
|
AppendHTML(Text)
|
从邮件追加HTML格式正文,如例所示:Message. AppendHTML(“<H3>Hello Word</H3>”)
|
AppendText(Text)
|
向邮件添加文本正文。
|
Clear()
|
清除所有邮件消息,是成为一个空对象。
|
ClearAttachments()
|
清除附件列表。如:Message.ClearAttachments
|
ClearCustomHeaders()
|
清除所有自定义的邮件头。
|
ClearRecipients()
|
清除所有收件人地址列表。
|
Close()
|
释放Jmail与邮件服务器连接而使用的缓存(Cache)。
|
DecodeHeader(Header):String
|
输出一个邮件头消息。
|
ExtractEmailAddressesFromURL(bstrURL,bstrAuth)
|
从指定的网制(URL)读取并添加邮件列表。
|
GetMessageBodyFromURL(同上)
|
删除邮件正文并用指定的URL的内容代替。
|
KeyInformation(keyIdentifier):pointer
|
返回一个PGPKey对象。
|
LoadFromStream(Stream)
|
从数据库流读取数据,该数据库流必须符合RFC822标准。
|
LogCustomMessage(Message)
|
给Jmail日志文件添加自定义日志。此函数只有在logging属性被设置为True时有效。
|
Nq()
|
将邮件追加到发送队列等待发送。
|
ParseMessage(MessageSource)
|
解析一个邮件,数据流必须符合RFC822格式标准。
|
SaveToStream(Stream)
|
保存邮件到数据流,数据流必须符合RFC822格式标准。
|
Send(MailServer,enque):Boolean
|
发送邮件。邮件服务器是一个描述邮件服务器名称或地址的字符串,用户名和密码是可选项。当要发送认证邮件时使用格式为:用户名:密码@邮件服务器
|
SendToNewsGroup(ServerName,NewsGroup)
|
使用指定的NNTP服务器发送邮件到新闻组,多个邮件用“,”隔开。
|
About():string
|
设置一些附加信息。
|
Attachments():Pointer
|
返回邮件的附件集合。Set Attachments=Message.Attachments
|
Body():String
|
返回邮件正文。Response.Write (Message.Body)
|
BodyText():String
|
返回全部的文本正文。Response.Write (Message.BodyText)
|
Charset():String
|
设置邮件使用的字符集。默认为US-ASCII,支持中文则设置为GB2312。
|
ContentTransferEncoding():String
|
设置邮件编码。默认为:Quoted-Printable.
|
ContentType():string
|
返回正文类型。
|
Date():Date
|
返回邮件发送时间。
|
DeferredDelivery():Date
|
设置邮件定时发送。
|
Encoding():String
|
设置附件的默认编码:Base64或Quoted-Printable
|
EncryptAttachments():Boolean
|
设置为True时,所有的附件都被加密,当然是编译器可用的情况下。其默认值为True.
|
ErrorCode():Integer
|
如果message.silent设置为True时,该函数包含错误号。
|
ErroeMessage():String
|
如果message.silent设置为True时,该函数包含错误描述。
|
ErroeSource():String
|
如果message.silent设置为True时,该函数包含错误来源。
|
From():String
|
返回或设置发件人的Email地址。
|
FromName():String
|
返回或设置发件人的名字。
|
HTMLBody():String
|
返回或设置邮件正文的HTML部分。
|
ISOEncodeHeaders():Boolean
|
邮件头是否使用iso-8859-1编码。(默认为True)
|
Log():String
|
当Logging为True时,该函数返回创建的日志。
|
Logging():Boolean
|
是否启用日志。Message.Logging=True时,启用日志。
|
MailData():String
|
返回邮件的源代码。
|
MailDomain():String
|
设置发送邮件时使用的邮件服务器。
|
MailServerPassWord():String
|
当邮件服务器使用SMTP发信认证时,该函数设置登录密码。
|
MailServerUserName():String
|
当邮件服务器使用SMTP发信认证时,该函数设置登录帐号。
|
MimeVersion():String
|
声明Mime版本,默认为1.0。
|
MsPickupdirectory():String
|
指定MS SMTP服务的Pickup文件夹的位置。
|
PGPEncrypt():Boolean
|
当邮件是使用PGP发送时并该属性被设置为True时,该邮件将被自动加密。
|
PGPSign():Boolean
|
当邮件是使用PGP发送时并该属性被设置为True时,该邮件将被自动签名。
|
Priority():Byte
|
设置邮件的优先级:1、2和3
|
Recipients():Pointer
|
返回收件人集合。
|
RecipientsString():String
|
返回收件人集合(只读)。
|
ReplyTo():String
|
指定一个回复地址。
|
Silent():Boolean
|
当设置为True时,Send()方法就会忽略错误并不将错误信息返回给操作系统。
|
SimpleLayout():Boolean
|
当设置为True时,发信时Jmail不会添加邮件头到邮件里。
|
Size():Integer
|
返回邮件的总字节数。
|
Subject():String
|
设置邮件标题。
|
Text():string
|
返回完整的邮件内容。
|
Version():String
|
返回Jmal的版本信息。
|
4、 Headers对象
属性(或方法)
|
描述
|
GetHeader(HeaderName):String
|
返回指定的邮件头的值。
|
Text():String
|
返回所有的邮件头的值。
|
5、 Recipients对象
属性(或方法)
|
描述
|
Add(Value)
|
追加一个收件人到集合中。
|
Clear()
|
清除集合中的全部记录。
|
Count():Integer
|
返回集合中收件人的总数。
|
Item(Index):Pointer
|
返回集合中的一个指定的收件人。
|
6、 Recipient对象
属性(或方法)
|
描述
|
New(Name,Email,recipientType):Pointer
|
创建一个可以添加到收件人集合中Recipients的收件人。
|
Email():String
|
返回收件人的邮件。
|
Name():String
|
返回收件人的姓名。
|
ReType():Integer
|
返回收件人模式(收件人To=0,抄送CC=1,暗送BCC=2)。
|
7、 Attachments对象
属性(或方法)
|
描述
|
Add(Attachment)
|
添加一个附件到集合。
|
Clear()
|
清除集合中的全部附件。
|
Count():Integer
|
返回集合中附件的总数。
|
Item(Index):Pointer
|
返回集合中指定的附件。
|
8、 Attachment对象
属性(或方法)
|
描述
|
New(FileName,ContentType,Data):Pointer
|
创建一个可以加入到Attachments集合的附件。如果指定Data的值,那么Jmail将创建一个以Data参数为内容的自定义附件。
|
SaveToFile(FileName)
|
保存附件到硬盘。
|
ContentType():String
|
返回附件类型(ContentType)
|
Data():String
|
返回附件的内容。
|
BinaryData():String
|
以二进制模式返回附件的内容。
|
IsInline():Boolean
|
如果附件被设置为可嵌入(inline),则返回True。
|
Name():String
|
返回附件的文件名称。
|
Size():Integer
|
返回附件的大小。
|
9、 MailMerge对象
属性(或方法)
|
描述
|
BulkMerge(RecordSet,enque,Maildestination)
|
参照邮件模板合并所有记录,要指定使用的pickuo文件夹或邮件服务器。
|
Expand():Pointer
|
参照用户指定的方式合并邮件模板(mailTemplate)。
|
ExpandFromRecordSet(RecordSet):Pointer
|
参照邮件模板(mailTemplate)合并ADO对象中的一例。
|
SetDebugMode(TestMailAddress,TestCount)
|
将邮件合并(mailMerge)设置为测试模式。
|
Item(VariableNmae):String
|
手工设置合并参数。注意:该功能不使用于ADO数据例的合并。
|
MailTemplate():Pointer
|
设置一个创建好的Message对象,这个对象将被作为邮件合并的模板。
|
MergeAttachments():Boolean
|
当该属性设置为 True时,附件被作为邮件合并的一个选项。
|
10、 PGPKeys对象
属性(或方法)
|
描述
|
Count():Integer
|
返回密码的总数。
|
Item(Index):Pointer
|
返回PGPKey信息对象。
|
11、 PGPKeyInfo对象
属性(或方法)
|
描述
|
KeyCreateDate():String
|
返回邮件密码创建的时间。
|
KeyID():String
|
返回密码的ID号。
|
KeyUser():String
|
返回创建密码的用户名。
|
12、 SpeedMailer对象
属性(或方法)
|
描述
|
EnqueMail(FromEmail,RecipientEmails,
Subject,Body,MsPickupdirectory)
|
添加一个邮件到发送队列。内容、主题等数据通过该方法的参数传递。
|
SendMail(FromEMail,RecipientEMails,
Subject,Body,MailServers)
|
通过SMTP发送一封邮件。内容、主题等数据通过该方法的参数传递。
|
Send
|
关于该函数的用法请访问:http://
|
四、利用Jmail4.3邮件组件发送邮件示例:
通过以上的介绍,相信读者对Dimac W3 Jmail及其一些常用的对象已有了比较全面的了解。下面将通过一个例子来讲解如何创建w3 Jmail对象,并使用它来创建一个新邮件,设置邮件的标题、内容等并发送该邮件。
JmailSend.ASP
<%@Language=”VBScript”%>
<%
Response.Buffer=True
‘创建Jmail.Message对象实例oJmail
Set oJmail=Server.CreateObject(“Jmail.Message”)
‘启动日志功能
oJmail.Logging=True
‘不将错误返回给操作系统
oJmail.Silent=True
‘设置邮件发送者的邮件地址
oJmail.From=”jackywen01@163.com”
‘设置邮件发送者的姓名
oJmail.FromName=”小虎”
‘设置接收邮件人的邮箱地址
oJmail.AddRecipient “yourfriend@163.com”
‘设置邮件标题
oJmail.Subject=”邮件测试系统”
‘邮件正文
oJmail.Body=”朋友:”&vbCrLf&vbCrLf&”最近,我使用Jmail开发一个邮件发送系统。”
‘发送邮件,Mail.myDomain.com假设为SMTP服务器
oJmail.Send(“Mail.myDomain.com”)
%>
接下来我们再来看一个比较简单的邮件接收系统。这个例子的执行过程,首先是从存放邮件的服务器上取出邮件,然后把它同附件一起显示在Web也面上。
JmailReceipt.ASP
<% @LANGUAGE=VBSCRIPT %>
<%
Set pJmail = Server.CreateObject( "JMail.POP3" )
pJmail.Connect "username", "passWord", "mail.mydomain.com"
Response.Write( "你有 " & pJmail.count & " 封新邮件<br><br>" )
if pJmail.count > 0 then
Set msg = pJmail.Messages.item(1)
ReTo = ""
ReCC = ""
Set Recipients = msg.Recipients
separator = ", "
For i = 0 To Recipients.Count - 1
If i = Recipients.Count - 1 Then
separator = ""
End If
Set re = Recipients.item(i)
If re.ReType = 0 Then
ReTo = ReTo & re.Name & " (" & re.EMail & ")" & separator
else
ReCC = ReTo & re.Name & " (" & re.EMail & ")" & separator
End If
Next
Function getAttachments()
Set Attachments = msg.Attachments
separator = ", "
For i = 0 To Attachments.Count - 1
If i = Attachments.Count - 1 Then
separator = ""
End If
Set at = Attachments(i)
at.SaveToFile( "c:\fujian\" & at.Name )
getAttachments = getAttachments & "<a href="../../"/fujian/" &_
at.Name &""">" & at.Name & "(" & at.Size & " bytes)" &_
"</a>" & separator
Next
End Function
%>
<HTML>
<body>
<TABLE>
<tr>
<td>主题</td>
<td><%= msg.Subject %></td>
</tr>
<tr>
<td>发件人</td>
<td><%= msg.FromName %></td>
</tr>
<tr>
<td>收件人</td>
<td><%= ReTO %></td>
</tr>
<tr>
<td>抄送人</td>
<td><%= ReCC %></td>
</tr>
<tr>
<td>附件</td>
<td><%= getAttachments %></td>
</tr>
<tr>
<td>正文</td>
<td><pre><%= msg.Body %></pre></td>
</tr>
</TABLE>
</body>
</HTML>
<%
end if
pJmail.Disconnect ‘断开POP3连接
%>
至此,一个简单的邮件发送和接收系统就开发完成了。至于有些网友要开发比较复杂的邮件系统,可以结合以上所讲的对象及其属性方法来开发,肯定会开发出功能强大齐全的邮件系统。
(1)Body(信件正文) : 字符串如:JMail.Body = "这里可以是用户填写的表单内容,可以取自From。"
(2)Charset(字符集,缺省为"US-ASCII") : 字符串如:JMail.Charset = "US-ASCII"
(3)ContentTransferEncoding : 字符串 指定内容传送时的编码方式,缺省是"Quoted-Printable"如:JMail.ContentTransferEncoding = "base64"
(4)ContentType(信件的contentype. 缺省是"text/plain") : 字符串如果你以HTML格式发送邮件, 改为"text/html"即可。 如:JMail.ContentType = "text/html"
(5)Encoding : 字符串 设置附件编码方式(缺省是"base64)。 可以选择使用的是"base64", "uuencode" or "quoted-printable" 如:JMail.Encoding = "base64"
(6)Log(Jmail创建的日志,前提loging属性设置为true,见下面) : 字符串 如:使用Response.Write( JMail.Log )语句列出日志信息。
(7)Logging(是否使用日志) : 布尔型 如:JMail.Logging = true
(8)Recipients : 字符串 只读属性,返回所有收件人 如:Response.Write( "" + JMail.Recipients + "" );
(9)ReplyTo(指定别的回信地址) : 字符串 如:JMail.ReplyTo = "anyother@mailhost.com"
(10)Sender( 发件人的邮件地址) : 字符串 如:JMail.Sender = "sender@mailhost.com"
(11)SenderName(发件人的姓名) : 字符串如:JMail.SenderName = "一克"
(12)ServerAddress(邮件服务器的地址) : 字符串 你可以指定多个服务器,用分号点开。可以指定端口号。 如果serverAddress保持空白,JMail会尝试远程邮件服务器,然后直接发送到服务器上去。 如:JMail.ServerAddress = "mail.263.net.cn"
(13)Subject(设定邮件的标题,可以取自From。):字符串 如:JMail.Subject = "客户反馈表单"
(14)添加文件附件到邮件 如:JMail.AddAttachment( "c:\anyfile.zip" )
(15)AddCustomAttachment( FileName, Data ) 添加自定义附件. 如:JMail.AddCustomAttachment( "anyfile.txt", "Contents of file" );
(16)AddHeader( Header, Value ) 添加用户定义的信件标头。 如:JMail.AddHeader( "Originating-IP","192.168.10.10" );
(17)AddRecipient(收件人):字符串 如:JMail.AddRecipient( "info@dimac.net" );
(18)AddRecipientBCC( Email ),密件收件人: 如:JMail.AddRecipientBCC( "anyone@mailhost.com" );
(19)AddRecipientCC( Email ) ,抄送收件人:如:JMail.AddRecipientCC( "anyone@mailhost.com" )
(20)AddURLAttachment( URL, 文档名) 下载并添加一个来自url的附件. 第二个参数"文档名", 用来指定信件收到后的文件名。如:JMail.AddURLAttachment( "http://www.chinabs.net/jmail.zip", "jmail" )
(21)AppendBodyFromFile( 文件名) ,将文件作为信件正文: 如:JMail.AppendBodyFromFile( "c:\anyfile.txt" )
(22)AppendText( Text )追加信件的正文内容,比如增加问候语或者其它信息。 如:JMail.AppendText( "欢迎访问本站!" )
(23)Close() ,强制JMail关闭缓冲的与邮件服务器的连接: 如:JMail.Close()
(24)Execute() ,执行邮件的发送 如:JMail.Execute()
原标题:JMail实现邮件发送的解决方案
关键词:邮件
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。