翻譯|使用教程|編輯:況魚杰|2020-12-07 11:17:46.973|閱讀 226 次
概述:本示例使用單一模板和數(shù)據(jù)庫發(fā)送多封帶附件的郵件。與簡單版示例的兩個(gè)主要區(qū)別。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
MailBee Objects是一個(gè)組件集合。您可以使用該控件創(chuàng)建并將郵件發(fā)送到SMTP服務(wù)器并從POP3服務(wù)器接收、解析以及刪除電子郵件,還能在IMAP4服務(wù)器上管理電子郵件以及文件夾。它同樣支持SSL以及S/MIME以獲得更好的安全性能。MailBee控件能在ASP、VB、C++或任何支持ActiveX技術(shù)的語言中使用。
本示例使用單一模板和數(shù)據(jù)庫發(fā)送多封帶附件的郵件。與簡單版示例的兩個(gè)主要區(qū)別。
該代碼假設(shè)數(shù)據(jù)庫位于C:\Docs/advanced_merge.mdb文件中,"email "表如下:
id |
email |
first_name |
last_name |
filename |
1 |
account@domain.com |
John |
Doe |
345.doc |
2 |
bill.smith@company.com |
Bill |
Smith |
|
3 |
Kate@site.com |
Kate |
Jones |
377.doc |
注意:某些SMTP服務(wù)器限制每秒(而非每個(gè)連接)的最大發(fā)送數(shù)量。例如,您每秒只能從同一IP地址發(fā)送5封電子郵件。在這種情況下,您可以在MailBee Message Queue系統(tǒng)中使用排隊(duì)和后臺傳遞。有關(guān)詳細(xì)信息,請參見排隊(duì)示例。
Visual Basic:
' Mailer object Dim objSMTP ' ADO Connection object Dim objConn ' ADO Recordset object Dim rsEmails ' Merge patterns (Body and "To:", all other fields remain ' unchanged for all e-mails in the mailing list) Dim strBodyPattern, strToPattern ' Counter to limit number of sends per connection Dim I ' Define body pattern strBodyPattern = "Hello %%FIRST_NAME%%, " & vbCrLf & _ "You are welcome to visit our site at:" & vbCrLf & _ "http://www.site.com" & vbCrLf & vbCrLf & _ "Sincerely, Site Team" ' Define "To:" pattern (will look like ' "John Doe " in e-mail) strToPattern = "%%FIRST_NAME%% %%LAST_NAME%% <%%EMAIL%%>" ' Create SMTP mailer component Set objSMTP = CreateObject("MailBee.SMTP") ' Enable logging SMTP session into a file. If any ' errors occur, the log can be used to investigate ' the problem. objSMTP.EnableLogging = True objSMTP.LogFilePath = "C:\smtp_log.txt" objSMTP.ClearLog ' Unlock mailer component objSMTP.LicenseKey = "put your license key here" ' Specify SMTP server name objSMTP.ServerName = "localhost" ' Comment next 3 lines if your SMTP server does not ' require SMTP authentication objSMTP.AuthMethod = 2 objSMTP.UserName = "your mail account name" objSMTP.Password = "your mail account password" ' Create ADO Connection object Set objConn = CreateObject("ADODB.Connection") ' Connect to Access database objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _ "Data Source=C:\Docs\advanced_merge.mdb;" ' Create ADO Recordset object Set rsEmails = CreateObject("ADODB.Recordset") ' Open "emails" table. This table is ' actual data source for the merge rsEmails.Open "emails", objConn ' Initialize counter to connect to SMTP ' server before sending any e-mails I = 1 ' Loop through the table Do While Not rsEmails.EOF ' Connect to the server. We connect only one time ' per 10 sends and reuse existing connection for ' subsequent 9 e-mails. If I = 1 Then If Not objSMTP.Connect Then ' Notify user on connection error and exit MsgBox "Error #" & objSMTP.ErrCode & ", " & objSMTP.ErrDesc Exit Do End If End If ' Set all properties for each e-mail. ' This is required because we will reset ' the message later to free Attachments ' collection. ' Plain-text e-mail. Change to 1 to send HTML e-mail objSMTP.BodyFormat = 0 ' Specify "From:" and "Subject:". They remain unchanged ' for all the e-mails. objSMTP.Message.FromAddr = "Site Team " objSMTP.Message.Subject = "Invitation" ' Merge body pattern and actual data ' from the database objSMTP.Message.BodyText = strBodyPattern objSMTP.Message.BodyText = Replace(objSMTP.Message.BodyText, "%%FIRST_NAME%%", rsEmails("first_name")) ' Merge body pattern and actual data ' from the database objSMTP.Message.ToAddr = strToPattern objSMTP.Message.ToAddr = Replace(objSMTP.Message.ToAddr, "%%FIRST_NAME%%", rsEmails("first_name")) objSMTP.Message.ToAddr = Replace(objSMTP.Message.ToAddr, "%%LAST_NAME%%", rsEmails("last_name")) objSMTP.Message.ToAddr = Replace(objSMTP.Message.ToAddr, "%%EMAIL%%", rsEmails("email")) ' Add attachment if required If rsEmails("filename") <> "" Then objSMTP.Message.AddAttachment "C:\Data\" & rsEmails("filename") End If ' Try to send e-mail If Not objSMTP.Send Then ' Notify user on sending error MsgBox "Error #" & objSMTP.ErrCode & ", " & objSMTP.ErrDesc End If ' Reset all message properties to defaults and ' clear Attachments collection. If this method ' was not called, subsequent messages would also ' hold attachments from previously sent messages. objSMTP.ResetMessage ' Proceed with the next record in the table rsEmails.MoveNext ' Disconnect once 10-th e-mail is sent or passed ' the end of the database. ' ' You may adjust number of 10 to the maximum ' "sends per connection" value allowed by your ' SMTP server. If I = 10 Or rsEmails.EOF Then ' Disconnect from SMTP server objSMTP.Disconnect ' Reinitialize counter to force Connect ' before next send I = 0 End If ' Proceed with the next e-mail I = I + 1 Loop ' Close the table and the whole database rsEmails.Close objConn.Close ' Free database-related objects Set rsEmails = Nothing Set objConn = Nothing
ASP:
<% ' Mailer object Dim objSMTP ' ADO Connection object Dim objConn ' ADO Recordset object Dim rsEmails ' Merge patterns (Body and "To:", all other fields remain ' unchanged for all e-mails in the mailing list) Dim strBodyPattern, strToPattern ' Counter to limit number of sends per connection Dim I ' Define body pattern strBodyPattern = "Hello %%FIRST_NAME%%, " & vbCrLf & _ "You are welcome to visit our site at:" & vbCrLf & _ "http://www.site.com" & vbCrLf & vbCrLf & _ "Sincerely, Site Team" ' Define "To:" pattern (will look like ' "John Doe " in e-mail) strToPattern = "%%FIRST_NAME%% %%LAST_NAME%% <%%EMAIL%%>" ' Create SMTP mailer component Set objSMTP = Server.CreateObject("MailBee.SMTP") ' Enable logging SMTP session into a file. If any ' errors occur, the log can be used to investigate ' the problem. objSMTP.EnableLogging = True objSMTP.LogFilePath = "C:\smtp_log.txt" objSMTP.ClearLog ' Unlock mailer component objSMTP.LicenseKey = "put your license key here" ' Specify SMTP server name objSMTP.ServerName = "localhost" ' Comment next 3 lines if your SMTP server does not ' require SMTP authentication objSMTP.AuthMethod = 2 objSMTP.UserName = "your mail account name" objSMTP.Password = "your mail account password" ' Create ADO Connection object Set objConn = Server.CreateObject("ADODB.Connection") ' Connect to Access database objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _ "Data Source=C:\Docs\advanced_merge.mdb;" ' Create ADO Recordset object Set rsEmails = Server.CreateObject("ADODB.Recordset") ' Open "emails" table. This table is ' actual data source for the merge rsEmails.Open "emails", objConn ' Initialize counter to connect to SMTP ' server before sending any e-mails I = 1 ' Loop through the table Do While Not rsEmails.EOF ' Connect to the server. We connect only one time ' per 10 sends and reuse existing connection for ' subsequent 9 e-mails. If I = 1 Then If Not objSMTP.Connect Then ' Notify user on connection error and exit Response.Write "Error #" & objSMTP.ErrCode & ", " & objSMTP.ErrDesc Exit Do End If End If ' Set all properties for each e-mail. ' This is required because we will reset ' the message later to free Attachments ' collection. ' Plain-text e-mail. Change to 1 to send HTML e-mail objSMTP.BodyFormat = 0 ' Specify "From:" and "Subject:". They remain unchanged ' for all the e-mails. objSMTP.Message.FromAddr = "Site Team " objSMTP.Message.Subject = "Invitation" ' Merge body pattern and actual data ' from the database objSMTP.Message.BodyText = strBodyPattern objSMTP.Message.BodyText = Replace(objSMTP.Message.BodyText, "%%FIRST_NAME%%", rsEmails("first_name")) ' Merge body pattern and actual data ' from the database objSMTP.Message.ToAddr = strToPattern objSMTP.Message.ToAddr = Replace(objSMTP.Message.ToAddr, "%%FIRST_NAME%%", rsEmails("first_name")) objSMTP.Message.ToAddr = Replace(objSMTP.Message.ToAddr, "%%LAST_NAME%%", rsEmails("last_name")) objSMTP.Message.ToAddr = Replace(objSMTP.Message.ToAddr, "%%EMAIL%%", rsEmails("email")) ' Add attachment if required If rsEmails("filename") <> "" Then objSMTP.Message.AddAttachment "C:\Data\" & rsEmails("filename") End If ' Try to send e-mail If Not objSMTP.Send Then ' Notify user on sending error Response.Write "Error #" & objSMTP.ErrCode & ", " & objSMTP.ErrDesc & "<br>" End If ' Reset all message properties to defaults and ' clear Attachments collection. If this method ' was not called, subsequent messages would also ' hold attachments from previously sent messages. objSMTP.ResetMessage ' Proceed with the next record in the table rsEmails.MoveNext ' Disconnect once 10-th e-mail is sent or passed ' the end of the database. ' ' You may adjust number of 10 to the maximum ' "sends per connection" value allowed by your ' SMTP server. If I = 10 Or rsEmails.EOF Then ' Disconnect from SMTP server objSMTP.Disconnect ' Reinitialize counter to force Connect ' before next send I = 0 End If ' Proceed with the next e-mail I = I + 1 Loop ' Close the table and the whole database rsEmails.Close objConn.Close ' Free database-related objects Set rsEmails = Nothing Set objConn = Nothing %>
接下來會還有郵件合并和批量電子郵件-排隊(duì)的相關(guān)教程,多多關(guān)注,不要錯(cuò)過哦!您也可以在評論留下你的經(jīng)驗(yàn)和建議。除了本教程,想要了解更多電子郵件相關(guān)產(chǎn)品信息的可以點(diǎn)擊此處查看。有更多教程資源等著你!
==========================================
如果想要購買正版授權(quán)MailBee.NET Objects的朋友,可以聯(lián)系
關(guān)注慧聚IT微信公眾號 ???,了解產(chǎn)品的最新動態(tài)及最新資訊。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: