JMail實現郵件發送的解決方案
廣告:
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、 卸載 卸載組件是安裝組件的相反動作,可以使用參數/U來卸載已安裝的組件,執行命令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發送一封郵件。內容、主題等數據通過該方法的參數傳遞。 |
SendXMLMail(XML) | 關于該函數的用法請訪問:http://xml.dimac.net/namespace/jmail |
四、利用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連接
%>
至此,一個簡單的郵件發送和接收系統就開發完成了。至于有些網友要開發比較復雜的郵件系統,可以結合以上所講的對象及其屬性方法來開發,肯定會開發出功能強大齊全的郵件系統。
廣告: