PowerShell Memo

このサイトはPowerShell(MSH/Monad)奮闘記です

管理人「newpops吉岡洋」が
「PowerShell(旧名:MSH/Monad)」の研究結果を日々綴っていきます。

【お知らせ】
この日記からPowerShellのTipsを抽出し「PowerShell FAQ」として整理しました。


2006-06-18

[][]PowerShellでメールを送る

WSHならCDO

WSHでメールを送る場合はCDO(Collaboration Data Objects)を利用するのが定石です。

CDOを利用したメール送信サンプル(VBScript)
Set oMsg = CreateObject("CDO.Message")
oMsg.From = "from@xxx.co.jp"
oMsg.To = "to@xxx.co.jp"
oMsg.Subject = "サブジェクト"
oMsg.TextBody = "テストメッセージです" & vbCrLf & Now
oMsg.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
oMsg.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
	"smtp.xxx.co.jp"
oMsg.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
oMsg.Configuration.Fields.Update
oMsg.Send

PowerShellでもCDO

Monad Beta2からCOMオブジェクトの利用がサポートされましたが、当時はCDOは未サポートでした。

参考:「COMオブジェクト呼び出し」の制限 - PowerShell Memo

現在の最新版である、PowerShell RC1でCDOを試してみると、あれま、利用できるではないですか。

いつからサポートされたのでしょうか。

CDOを利用したメール送信サンプル(PowerShell)
$sendusing = "http://schemas.microsoft.com/cdo/configuration/sendusing"
$smtpserver = "http://schemas.microsoft.com/cdo/configuration/smtpserver"
$smtpserverport = "http://schemas.microsoft.com/cdo/configuration/smtpserverport"
$oMsg = new-object -com "CDO.Message"
$oMsg.From = "from@xxx.co.jp"
$oMsg.To = "to@xxx.co.jp"
$oMsg.Subject = "サブジェクト"
$oMsg.TextBody = "テストメッセージです"
$oMsg.Configuration.Fields.Item($sendusing) = 2
$oMsg.Configuration.Fields.Item($smtpserver) = "smtp.xxx.co.jp"
$oMsg.Configuration.Fields.Item($smtpserverport) = 25
$oMsg.Configuration.Fields.Update()
$oMsg.Send()

ブログレイアウトの都合でWSHサンプルとは書き方を変えています。

PowerShellならSmtpClient

@ITでも紹介されていましたが、.NET 2.0ではSmtpClientクラスを利用することで、メール送信を簡単に行えます。

SmtpClientを利用したメール送信サンプル(PowerShell)
$mailer = new-object System.Net.Mail.SmtpClient("smtp.xxx.co.jp")
$mailer.Send("from@xxx.co.jp","to@xxx.co.jp","サブジェクト","本文")

CDOのように冗長なコードを書かずともメールが送れますね。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/newpops/20060618/p1
Connection: close