翻译|使用教程|编辑:况鱼杰|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 & _
"//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 & _
"//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
文章转载自: