VBA Fox編
【4】メール送信
決して乱用しないようにとの前置きをしてから本題へ入ります。最近のメールサーバーはスパムメール対策で
送信時の認証が必要になっていると思いますので、認証有りのケースを示します。yahooでさえ認証無しにはVBAから送信できませんでした。
Microsoft CDO for Windows 2000 Libraryを参照設定に追加して以下のプロシージャでoutlook等のメーラー
に設定している内容をセットしてやるだけでできます。
以下をユーザーフォームにCommandButton1を追加して記述する
Option Explicit
Private Sub CommandButton1_Click()
If F_MailSend("kkkkkkkkkk@yahoo.co.jp", "件名こんにちは", "メールの本文") = 0 Then
MsgBox " メール送信完了", vbInformation
Else
MsgBox " メール送信エラー", vbInformation
End If
End Sub
Public Function F_MailSend(M_To As String, M_Subject As String, M_Body As String) As Integer
'■Microsoft CDO for Windows 2000 Libraryを参照設定すること
'■引数
' M_To : 宛先アドレス
' M_Subject : 件名
' M_Body : 本文
'■戻り値
' 正常時:0, エラー時:1
Dim O_CDO As New CDO.Message
On Error GoTo Error_Proc
With O_CDO
With .Configuration.Fields
.Item(cdoSendUsingMethod) = cdoSendUsingPort ' 外部SMTP指定
.Item(cdoSMTPServer) = "smtp.mail.yahoo.co.jp" ' SMTPサーバ名
.Item(cdoSMTPServerPort) = 25 ' ポート番号
.Item(cdoSMTPConnectionTimeout) = 60 ' タイムアウト秒数
'SMTP‐AUTH有り
.Item(cdoSMTPAuthenticate) = cdoBasic 'SMTP認証 :PLAIN / LOGIN / CRAM-MD5
.Item(cdoSendUserName) = "zzzzzzzzzzz" 'ユーザー名
.Item(cdoSendPassword) = "yyyyyyyyyyy" 'パスワード
.Item(cdoLanguageCode) = cdoShift_JIS ' 文字コード指定
.Update ' 設定更新
End With
.MimeFormatted = True
.Fields.Update
.From = "uuuuu<xxxxxxxxxxx@yahoo.co.jp>" ' 送信者名+送信者メールアドレス
.To = M_To ' 宛先
.Subject = M_Subject ' 件名
.TextBody = M_Body ' 本文
.TextBodyPart.Charset = cdoShift_JIS ' 文字コード指定(本文)
.Send ' 送信
End With
Set O_CDO = Nothing
F_MailSend = 0
Exit Function
Error_Proc:
F_MailSend = 1
Set O_CDO = Nothing
End Function