翻譯|使用教程|編輯:況魚杰|2020-12-07 11:17:46.973|閱讀 234 次
概述:本示例使用單一模板和數據庫發送多封帶附件的郵件。與簡單版示例的兩個主要區別。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
MailBee Objects是一個組件集合。您可以使用該控件創建并將郵件發送到SMTP服務器并從POP3服務器接收、解析以及刪除電子郵件,還能在IMAP4服務器上管理電子郵件以及文件夾。它同樣支持SSL以及S/MIME以獲得更好的安全性能。MailBee控件能在ASP、VB、C++或任何支持ActiveX技術的語言中使用。
本示例使用單一模板和數據庫發送多封帶附件的郵件。與簡單版示例的兩個主要區別。
該代碼假設數據庫位于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服務器限制每秒(而非每個連接)的最大發送數量。例如,您每秒只能從同一IP地址發送5封電子郵件。在這種情況下,您可以在MailBee Message Queue系統中使用排隊和后臺傳遞。有關詳細信息,請參見排隊示例。
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
%>
接下來會還有郵件合并和批量電子郵件-排隊的相關教程,多多關注,不要錯過哦!您也可以在評論留下你的經驗和建議。除了本教程,想要了解更多電子郵件相關產品信息的可以點擊此處查看。有更多教程資源等著你!
==========================================
如果想要購買正版授權MailBee.NET Objects的朋友,可以聯系
關注慧聚IT微信公眾號 ???,了解產品的最新動態及最新資訊。
	 
 
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉載自: