メールを送信する方法はいくつかありますが、CDO を選択する理由としては以下の場合になると思います。
- VBA、VBScript を使ってメールを送信する。
- SMTPサーバのポート465 (SMTP over SSL) を使う。
CDO.Message は SMTP over SSL (ポート465) の SMTP 認証方式を使います。TLS/STARTTLS (ポート587) の SMTP 認証方式には対応していないため、この場合は以下のエラーになります。
エラーメッセージ: -2147220973 転送においてサーバーに接続できませんでした。
Google のメールサーバ情報
https://support.google.com/mail/answer/13287
VBScript もしくは Windows PowerShell から CDO.Message を使って Gmail へメールを送信するサンプルです。
VBScript の CDO.Message メール送信サンプル
Set msg = CreateObject("CDO.Message") msg.From = 送信者アドレス msg.To = 送信先アドレス msg.Subject = "CDO.Message Mail by VBScript" msg.TextBody = "Test Mail. " & vbTab & Now uri = "http://schemas.microsoft.com/cdo/configuration/" msg.Configuration.Fields.Item(uri & "sendusing") = 2 msg.Configuration.Fields.Item(uri & "smtpserver") = "smtp.gmail.com" msg.Configuration.Fields.Item(uri & "smtpserverport") = 465 msg.Configuration.Fields.Item(uri & "smtpauthenticate") = 1 msg.Configuration.Fields.Item(uri & "smtpusessl") = true msg.Configuration.Fields.Item(uri & "sendusername") = Googleユーザ名 msg.Configuration.Fields.Item(uri & "sendpassword") = Googleパスワード msg.Configuration.Fields.Update msg.Send
Windows PowerShell の CDO.Message メール送信サンプル
$msg = New-Object -ComObject CDO.Message $msg.From = 送信者アドレス $msg.To = 送信先アドレス $msg.Subject = "CDO.Message Mail by Windows PowerShell" $msg.TextBody = "Test Mail. " + [System.DateTime]::Now $uri = "http://schemas.microsoft.com/cdo/configuration/" $msg.Configuration.Fields.Item($uri + "sendusing") = 2 $msg.Configuration.Fields.Item($uri + "smtpserver") = "smtp.gmail.com" $msg.Configuration.Fields.Item($uri + "smtpserverport") = 465 $msg.Configuration.Fields.Item($uri + "smtpauthenticate") = 1 $msg.Configuration.Fields.Item($uri + "smtpusessl") = $TRUE $msg.Configuration.Fields.Item($uri + "sendusername") = Googleユーザ名 $msg.Configuration.Fields.Item($uri + "sendpassword") = Googleパスワード $msg.Configuration.Fields.Update() $msg.Send()
名前空間URLのフィールドについて
CDOEX の Namespace URL について上記で使用した 名前空間URL (http://schemas.microsoft.com/cdo/configuration/) のフィールドについてまとめます。
■sendusing フィールドについて
CdoSendUsing Enum 定数を使います
- cdoSendUsingPickup (1)
ローカルのSMTP(ピックアップ・ディレクトリ)を使用する - cdoSendUsingPort (2)
SMTP ポートに接続する - cdoSendUsingExchange (3)
Microsoft Exchange を使用する
sendusing Field
http://msdn.microsoft.com/en-us/library/ms873037.aspx
CdoSendUsing Enum
http://msdn.microsoft.com/en-us/library/ms876415.aspx
■smtpauthenticate フィールドについて
CdoProtocolsAuthentication Enum 定数を使います
- cdoAnonymous (0)
認証しません - cdoBasic (1)
Basic認証を使います - cdoNTLM (2)
NTLM認証を使います
smtpauthenticate Field
http://msdn.microsoft.com/en-us/library/ms873042.aspx
CdoProtocolsAuthentication Enum
http://msdn.microsoft.com/en-us/library/ms870465.aspx
関連する資料のリンク
CDO.Message オブジェクトhttp://msdn.microsoft.com/ja-jp/library/cc421174.aspx
http://schemas.microsoft.com/cdo/configuration/ 名前空間
http://msdn.microsoft.com/en-us/library/ms526318.aspx
CDOEX Enumerations(URI のフィールド一覧)
http://msdn.microsoft.com/en-us/library/ms877952.aspx