JMail實(shí)現(xiàn)郵件發(fā)送的解決方案
廣告:
W3 JMail 郵件組件是Dimac公司開發(fā)的用來完成郵件的發(fā)送、接收、加密和集群傳輸?shù)裙ぷ鞯。w3 Jmail組件是國(guó)際最為流行的郵件組件之一,當(dāng)今世界上絕大部分ASP程序員都在使用w3 Jmail組件構(gòu)建郵件發(fā)送系統(tǒng),那是因?yàn)閣3 Jmail組件使用了新的內(nèi)核技術(shù),使其更加可靠和穩(wěn)定。 一、下面向讀者介紹w3 Jmail4.3組件的新特性: 1、 w3 Jmail4.3組件重新設(shè)計(jì)了其內(nèi)部結(jié)構(gòu)——使用Message對(duì)象代替原來的單一對(duì)象Jmail.smtpmail發(fā)送郵件; 2、 w3 Jmail4.3組件一共有十多個(gè)對(duì)象(后面將詳細(xì)介紹)——這些對(duì)象中,絕大多數(shù)是針對(duì)Jmail.Message對(duì)象操作的; 3、 支持從POP3郵件服務(wù)器收取郵件; 4、 支持加密郵件的傳輸; 5、 快速發(fā)送,一次會(huì)話就完成郵件發(fā)送; 6、 還有一個(gè)特性就是可以使用w3 Jmail4.3組件的集群發(fā)送功能一次發(fā)送成千上萬個(gè)郵件,還可以通過郵件合并(mailmerge)對(duì)象來個(gè)性化郵件。 二、Jmail郵件組件的安裝及卸載: 1、 安裝 跟使用別個(gè)組件一樣,在使用Jmail郵件組件之前要先安裝或注冊(cè)該組件Jmail.dll。具體注冊(cè)方法,是先把Jmail.dll文件拷貝到硬盤的某一目錄下(如C:\Jmail\Jmail.dll),然后執(zhí)行命令Regsvr32 C:\Jmail\Jmail.dll即可。 2、 卸載 卸載組件是安裝組件的相反動(dòng)作,可以使用參數(shù)/U來卸載已安裝的組件,執(zhí)行命令Regsvr32 /U Jmail.dll即可。 三、詳細(xì)介紹W3 Jmail組件的對(duì)象(12個(gè)): 1、.POP3對(duì)象
屬性(或方法) |
說明 |
Connect(Username,PassWord,Server,Port) | 連接POP3服務(wù)器,斷口可選,默認(rèn)110。 |
DeleteMessages() | 從郵件服務(wù)器上刪除所有郵件。 |
DeleteSingleMessage(MessageID) | 從郵件服務(wù)器上刪除由MessageID指定的郵件。 |
Disconnect() | 關(guān)閉跟郵件服務(wù)器的連接。 |
DownloadHeaders() | 從郵件服務(wù)器上讀取所有的郵件頭并傳遞給Messages集合。 |
DownloadMessages() | 從郵件服務(wù)器讀取所有郵件。 |
DownloadSingleHeader(MessageID) | 從郵件服務(wù)器讀取指定的郵件頭并傳遞給Messages集合。 |
DownloadUnreadMessages() | 從郵件服務(wù)器上讀取所有未讀郵件。 |
2、.Messages對(duì)象
屬性(或方法) |
說明 |
Clear() | 清除集合中的所有內(nèi)容,并不會(huì)刪除郵件服務(wù)器上的任何郵件。 |
Count():Integer | 返回集合中記錄的數(shù)目:I=Messages.Count |
Item(Index):Pointer | 返回一個(gè)Message對(duì)象。Set oMsg=Messages.Item(0) |
3、.Message對(duì)象
屬性(或方法) |
說明 |
AddAttachment(FileName,isInline,ContentType):String | 給郵件添加一個(gè)文件型的附件。isInline設(shè)置為True時(shí),添加的這個(gè)附件就是一個(gè)可嵌入的附件。 |
AddCustomAttachment(FileName,Data,isInline):String | 給郵件添加一個(gè)自定義類型的附件。 |
AddHeader(Xheader,Value) | 給郵件添加一個(gè)自定義郵件頭X-Header。 |
AddNativeHeader(Header,Value) | 給郵件添加一個(gè)郵件頭。 |
AddRecipient(emailAddress,recipientName,PGPKey) | 給郵件添加一個(gè)收件人。RecipientName和PGPKey是可選項(xiàng),RecipientName為收件人姓名,PGPKey給郵件加密。 |
AddRecipientBCC(emailAddress,PGPKey) | 添加一個(gè)郵件暗送人(BCC)地址。 |
AddRecipientCC(emailAddress,recipientName,PGPKey) | 給郵件添加一個(gè)郵件抄送人(CC)地址。 |
AddURLAttachment(bstrURL,bstrAttachAs,isInline,bstrAuth):String | 從指定的URL下載文件并添加為郵件附件。參數(shù)bstrAttachAs是用來更改添加為郵件附件的文件名。 |
AppendBodyFromFile(FileName) | 清除郵件正文,并把指定文件的內(nèi)容作為郵件正文。 |
AppendHTML(Text) | 從郵件追加HTML格式正文,如例所示:Message. AppendHTML(“<H3>Hello Word</H3>”) |
AppendText(Text) | 向郵件添加文本正文。 |
Clear() | 清除所有郵件消息,是成為一個(gè)空對(duì)象。 |
ClearAttachments() | 清除附件列表。如:Message.ClearAttachments |
ClearCustomHeaders() | 清除所有自定義的郵件頭。 |
ClearRecipients() | 清除所有收件人地址列表。 |
Close() | 釋放Jmail與郵件服務(wù)器連接而使用的緩存(Cache)。 |
DecodeHeader(Header):String | 輸出一個(gè)郵件頭消息。 |
ExtractEmailAddressesFromURL(bstrURL,bstrAuth) | 從指定的網(wǎng)制(URL)讀取并添加郵件列表。 |
GetMessageBodyFromURL(同上) | 刪除郵件正文并用指定的URL的內(nèi)容代替。 |
KeyInformation(keyIdentifier):pointer | 返回一個(gè)PGPKey對(duì)象。 |
LoadFromStream(Stream) | 從數(shù)據(jù)庫(kù)流讀取數(shù)據(jù),該數(shù)據(jù)庫(kù)流必須符合RFC822標(biāo)準(zhǔn)。 |
LogCustomMessage(Message) | 給Jmail日志文件添加自定義日志。此函數(shù)只有在logging屬性被設(shè)置為True時(shí)有效。 |
Nq() | 將郵件追加到發(fā)送隊(duì)列等待發(fā)送。 |
ParseMessage(MessageSource) | 解析一個(gè)郵件,數(shù)據(jù)流必須符合RFC822格式標(biāo)準(zhǔn)。 |
SaveToStream(Stream) | 保存郵件到數(shù)據(jù)流,數(shù)據(jù)流必須符合RFC822格式標(biāo)準(zhǔn)。 |
Send(MailServer,enque):Boolean | 發(fā)送郵件。郵件服務(wù)器是一個(gè)描述郵件服務(wù)器名稱或地址的字符串,用戶名和密碼是可選項(xiàng)。當(dāng)要發(fā)送認(rèn)證郵件時(shí)使用格式為:用戶名:密碼@郵件服務(wù)器 |
SendToNewsGroup(ServerName,NewsGroup) | 使用指定的NNTP服務(wù)器發(fā)送郵件到新聞組,多個(gè)郵件用“,”隔開。 |
About():string | 設(shè)置一些附加信息。 |
Attachments():Pointer | 返回郵件的附件集合。Set Attachments=Message.Attachments |
Body():String | 返回郵件正文。Response.Write (Message.Body) |
BodyText():String | 返回全部的文本正文。Response.Write (Message.BodyText) |
Charset():String | 設(shè)置郵件使用的字符集。默認(rèn)為US-ASCII,支持中文則設(shè)置為GB2312。 |
ContentTransferEncoding():String | 設(shè)置郵件編碼。默認(rèn)為:Quoted-Printable. |
ContentType():string | 返回正文類型。 |
Date():Date | 返回郵件發(fā)送時(shí)間。 |
DeferredDelivery():Date | 設(shè)置郵件定時(shí)發(fā)送。 |
Encoding():String | 設(shè)置附件的默認(rèn)編碼:Base64或Quoted-Printable |
EncryptAttachments():Boolean | 設(shè)置為True時(shí),所有的附件都被加密,當(dāng)然是編譯器可用的情況下。其默認(rèn)值為True. |
ErrorCode():Integer | 如果message.silent設(shè)置為True時(shí),該函數(shù)包含錯(cuò)誤號(hào)。 |
ErroeMessage():String | 如果message.silent設(shè)置為True時(shí),該函數(shù)包含錯(cuò)誤描述。 |
ErroeSource():String | 如果message.silent設(shè)置為True時(shí),該函數(shù)包含錯(cuò)誤來源。 |
From():String | 返回或設(shè)置發(fā)件人的Email地址。 |
FromName():String | 返回或設(shè)置發(fā)件人的名字。 |
HTMLBody():String | 返回或設(shè)置郵件正文的HTML部分。 |
ISOEncodeHeaders():Boolean | 郵件頭是否使用iso-8859-1編碼。(默認(rèn)為True) |
Log():String | 當(dāng)Logging為True時(shí),該函數(shù)返回創(chuàng)建的日志。 |
Logging():Boolean | 是否啟用日志。Message.Logging=True時(shí),啟用日志。 |
MailData():String | 返回郵件的源代碼。 |
MailDomain():String | 設(shè)置發(fā)送郵件時(shí)使用的郵件服務(wù)器。 |
MailServerPassWord():String | 當(dāng)郵件服務(wù)器使用SMTP發(fā)信認(rèn)證時(shí),該函數(shù)設(shè)置登錄密碼。 |
MailServerUserName():String | 當(dāng)郵件服務(wù)器使用SMTP發(fā)信認(rèn)證時(shí),該函數(shù)設(shè)置登錄帳號(hào)。 |
MimeVersion():String | 聲明Mime版本,默認(rèn)為1.0。 |
MsPickupdirectory():String | 指定MS SMTP服務(wù)的Pickup文件夾的位置。 |
PGPEncrypt():Boolean | 當(dāng)郵件是使用PGP發(fā)送時(shí)并該屬性被設(shè)置為True時(shí),該郵件將被自動(dòng)加密。 |
PGPSign():Boolean | 當(dāng)郵件是使用PGP發(fā)送時(shí)并該屬性被設(shè)置為True時(shí),該郵件將被自動(dòng)簽名。 |
Priority():Byte | 設(shè)置郵件的優(yōu)先級(jí):1、2和3 |
Recipients():Pointer | 返回收件人集合。 |
RecipientsString():String | 返回收件人集合(只讀)。 |
ReplyTo():String | 指定一個(gè)回復(fù)地址。 |
Silent():Boolean | 當(dāng)設(shè)置為True時(shí),Send()方法就會(huì)忽略錯(cuò)誤并不將錯(cuò)誤信息返回給操作系統(tǒng)。 |
SimpleLayout():Boolean | 當(dāng)設(shè)置為True時(shí),發(fā)信時(shí)Jmail不會(huì)添加郵件頭到郵件里。 |
Size():Integer | 返回郵件的總字節(jié)數(shù)。 |
Subject():String | 設(shè)置郵件標(biāo)題。 |
Text():string | 返回完整的郵件內(nèi)容。 |
Version():String | 返回Jmal的版本信息。 |
4、 Headers對(duì)象
屬性(或方法) |
描述 |
GetHeader(HeaderName):String | 返回指定的郵件頭的值。 |
Text():String | 返回所有的郵件頭的值。 |
5、 Recipients對(duì)象
屬性(或方法) |
描述 |
Add(Value) | 追加一個(gè)收件人到集合中。 |
Clear() | 清除集合中的全部記錄。 |
Count():Integer | 返回集合中收件人的總數(shù)。 |
Item(Index):Pointer | 返回集合中的一個(gè)指定的收件人。 |
6、 Recipient對(duì)象
屬性(或方法) |
描述 |
New(Name,Email,recipientType):Pointer | 創(chuàng)建一個(gè)可以添加到收件人集合中Recipients的收件人。 |
Email():String | 返回收件人的郵件。 |
Name():String | 返回收件人的姓名。 |
ReType():Integer | 返回收件人模式(收件人To=0,抄送CC=1,暗送BCC=2)。 |
7、 Attachments對(duì)象
屬性(或方法) |
描述 |
Add(Attachment) | 添加一個(gè)附件到集合。 |
Clear() | 清除集合中的全部附件。 |
Count():Integer | 返回集合中附件的總數(shù)。 |
Item(Index):Pointer | 返回集合中指定的附件 |
8、 Attachment對(duì)象
屬性(或方法) |
描述 |
New(FileName,ContentType,Data):Pointer | 創(chuàng)建一個(gè)可以加入到Attachments集合的附件。如果指定Data的值,那么Jmail將創(chuàng)建一個(gè)以Data參數(shù)為內(nèi)容的自定義附件。 |
SaveToFile(FileName) | 保存附件到硬盤。 |
ContentType():String | 返回附件類型(ContentType) |
Data():String | 返回附件的內(nèi)容。 |
BinaryData():String | 以二進(jìn)制模式返回附件的內(nèi)容。 |
IsInline():Boolean | 如果附件被設(shè)置為可嵌入(inline),則返回True。 |
Name():String | 返回附件的文件名稱。 |
Size():Integer | 返回附件的大小。 |
9、 MailMerge對(duì)象
屬性(或方法) |
描述 |
BulkMerge(RecordSet,enque,Maildestination) | 參照郵件模板合并所有記錄,要指定使用的pickuo文件夾或郵件服務(wù)器。 |
Expand():Pointer | 參照用戶指定的方式合并郵件模板(mailTemplate)。 |
ExpandFromRecordSet(RecordSet):Pointer | 參照郵件模板(mailTemplate)合并ADO對(duì)象中的一例。 |
SetDebugMode(TestMailAddress,TestCount) | 將郵件合并(mailMerge)設(shè)置為測(cè)試模式。 |
Item(VariableNmae):String | 手工設(shè)置合并參數(shù)。注意:該功能不使用于ADO數(shù)據(jù)例的合并。 |
MailTemplate():Pointer | 設(shè)置一個(gè)創(chuàng)建好的Message對(duì)象,這個(gè)對(duì)象將被作為郵件合并的模板。 |
MergeAttachments():Boolean | 當(dāng)該屬性設(shè)置為 True時(shí),附件被作為郵件合并的一個(gè)選項(xiàng)。 |
10、 PGPKeys對(duì)象
屬性(或方法) |
描述 |
Count():Integer | 返回密碼的總數(shù)。 |
Item(Index):Pointer | 返回PGPKey信息對(duì)象。 |
11、 PGPKeyInfo對(duì)象
屬性(或方法) |
描述 |
KeyCreateDate():String | 返回郵件密碼創(chuàng)建的時(shí)間。 |
KeyID():String | 返回密碼的ID號(hào)。 |
KeyUser():String | 返回創(chuàng)建密碼的用戶名。 |
12、 SpeedMailer對(duì)象
屬性(或方法) |
描述 |
EnqueMail(FromEmail,RecipientEmails, Subject,Body,MsPickupdirectory) | 添加一個(gè)郵件到發(fā)送隊(duì)列。內(nèi)容、主題等數(shù)據(jù)通過該方法的參數(shù)傳遞。 |
SendMail(FromEMail,RecipientEMails, Subject,Body,MailServers) | 通過SMTP發(fā)送一封郵件。內(nèi)容、主題等數(shù)據(jù)通過該方法的參數(shù)傳遞。 |
SendXMLMail(XML) | 關(guān)于該函數(shù)的用法請(qǐng)?jiān)L問:http://xml.dimac.net/namespace/jmail |
四、利用Jmail4.3郵件組件發(fā)送郵件示例: 通過以上的介紹,相信讀者對(duì)Dimac W3 Jmail及其一些常用的對(duì)象已有了比較全面的了解。下面將通過一個(gè)例子來講解如何創(chuàng)建w3 Jmail對(duì)象,并使用它來創(chuàng)建一個(gè)新郵件,設(shè)置郵件的標(biāo)題、內(nèi)容等并發(fā)送該郵件。 JmailSend.ASP <%@Language=”VBScript”%> <% Response.Buffer=True ‘創(chuàng)建Jmail.Message對(duì)象實(shí)例oJmail Set oJmail=Server.CreateObject(“Jmail.Message”) ‘啟動(dòng)日志功能 oJmail.Logging=True ‘不將錯(cuò)誤返回給操作系統(tǒng) oJmail.Silent=True ‘設(shè)置郵件發(fā)送者的郵件地址 oJmail.From=”jackywen01@163.com” ‘設(shè)置郵件發(fā)送者的姓名 oJmail.FromName=”小虎” ‘設(shè)置接收郵件人的郵箱地址 oJmail.AddRecipient “yourfriend@163.com” ‘設(shè)置郵件標(biāo)題 oJmail.Subject=”郵件測(cè)試系統(tǒng)” ‘郵件正文 oJmail.Body=”朋友:”&vbCrLf&vbCrLf&”最近,我使用Jmail開發(fā)一個(gè)郵件發(fā)送系統(tǒng)。” ‘發(fā)送郵件,Mail.myDomain.com假設(shè)為SMTP服務(wù)器 oJmail.Send(“Mail.myDomain.com”) %> 接下來我們?cè)賮砜匆粋(gè)比較簡(jiǎn)單的郵件接收系統(tǒng)。這個(gè)例子的執(zhí)行過程,首先是從存放郵件的服務(wù)器上取出郵件,然后把它同附件一起顯示在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>發(fā)件人</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連接
%>
至此,一個(gè)簡(jiǎn)單的郵件發(fā)送和接收系統(tǒng)就開發(fā)完成了。至于有些網(wǎng)友要開發(fā)比較復(fù)雜的郵件系統(tǒng),可以結(jié)合以上所講的對(duì)象及其屬性方法來開發(fā),肯定會(huì)開發(fā)出功能強(qiáng)大齊全的郵件系統(tǒng)。
廣告: