メールを自動的に送信したい MS Access 2010 db があります。クエリをセットアップしましたが、CDO VBA で行き詰まりました。彼らのクエリは「qryEmails」と呼ばれ、次の 4 つのフィールドが含まれています。
ReturnCode, SalesOrderNumber, Name, EmailAddress
アクセス方法:
- 各レコードをループし、リストされた各電子メール アドレスに電子メールを送信します
- 各メールに、最初の 3 つのフィールドへの参照を含むメッセージを含めることで、各メッセージがパーソナライズされたように表示されます
- 動的な件名を持っているので、
ReturnCode
フィールドは各件名にあります
最初は小さなステップを試していましたが、これまでのところ、同じアドレスに数百通のメールを受信しています。これが私のコードです(情報を開示したくない場合はXXXを使用しました):
Dim rst As ADODB.Recordset
Dim strSQL As String
Dim strEmail As String
Set rst = New ADODB.Recordset
'
strSQL = "[qryEmails]" 'source of recordset
rst.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
'
Do While Not rst.EOF
strEmail = rst.Fields("EmailAddress")
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Your refund is:" '
objMessage.FROM = """SENDER"" <XXX@somewhere.com>"
objMessage.To = rst.Fields("EmailAddress")
objMessage.TextBody = objMessage.TextBody & rst(1)
'==Add fields to email body
'Do While strEmail = rst.Fields("EmailAddress")
'rst.MoveNext
'If rst.EOF Then Exit Do
'Loop
' ========= SMTP server configuration
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'Name or IP of Remote SMTP Server
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "XXX"
'Server port (typically 25)
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
'==End remote SMTP server configuration section==
'Send email
objMessage.Send
'Clear variable for next loop
Set objMessage = Nothing
Loop
rst.Close
Set rst = Nothing
これが何百通ものメールを送信している理由は何ですか? これまでのクエリ結果は、テスト目的で 2 つのアドレスのみを返しています。