2014年7月19日土曜日

[Windows] System.Web.Mail によるメール送信

System.Web.Mail を使って外部へメール送信する方法です。

ただしこのクラスの使用は現在推奨されていません。代わりに System.Net.Mail 名前を使うよう推奨されています。VBA、VBScript のデフォルト状態では System.Web.Mail を使えません。Windows PowerShell の場合は、アセンブリの読み込みが必要です。

メールの送信については、実装は CDO.Message を使用しています。
http://msdn.microsoft.com/ja-jp/library/system.web.mail.smtpmail.aspx
CDOSYS (Collaboration Data Objects for Windows 2000) メッセージ コンポーネントを使用してメッセージを送信するための、プロパティとメソッドを提供します。

CDO.Message では SMTP over SSL (ポート465) の SMTP 認証方式を使います。TLS/STARTTLS (ポート587) の SMTP 認証方式には対応していないため、この場合は以下のエラーになります。
エラーメッセージ: 転送においてサーバーに接続できませんでした。

Google のメールサーバ情報
https://support.google.com/mail/answer/13287

Windows PowerShell から System.Web.Mail を使って Gmail へメールを送信するサンプルです。

Windows PowerShell における System.Web.Mail メール送信サンプル

# アセンブリの読み込み
# 正式には LoadWithPartialName(非推奨) でなく Load メソッドを使うべき
[System.Reflection.Assembly]::LoadWithPartialName("System.Web")

$mail = New-Object System.Web.Mail.MailMessage
$mail.From = 送信者アドレス
$mail.To = 送信先アドレス
$mail.Subject = "System.Web.Mail By Windows PowerShell"
$mail.Body = "Test Mail. " + [System.DateTime]::Now

$uri = "http://schemas.microsoft.com/cdo/configuration/"
$mail.Fields.Item($uri + "sendusing") = 2
$mail.Fields.Item($uri + "smtpserver") = "smtp.gmail.com"
$mail.Fields.Item($uri + "smtpserverport") = 465
$mail.Fields.Item($uri + "smtpauthenticate") = 1
$mail.Fields.Item($uri + "sendusername") = Googleユーザ名
$mail.Fields.Item($uri + "sendpassword") = Googleパスワード
$mail.Fields.Item($uri + "smtpusessl") = $TRUE

# $smtp = New-Object System.Web.Mail.SmtpMail
[System.Web.Mail.SmtpMail]::SmtpServer = "smtp.gmail.com"
[System.Web.Mail.SmtpMail]::Send($mail)

名前空間URLのフィールドについて

上記で使用した 名前空間URL (http://schemas.microsoft.com/cdo/configuration/) のフィールドについては、こちらの記事を参照してください。
CDO.Messageによるメール送信

関連する資料のリンク

System.Web.Mail 名前空間
http://msdn.microsoft.com/ja-jp/library/system.web.mail.aspx

System.Net.Mail 名前空間
http://msdn.microsoft.com/ja-jp/library/system.net.mail.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