CDO コンポーネントを使用すると VBS や VBA から簡単にメールを送信することができます。
次の表の環境で CDO コンポーネントを利用することができます。
環境 | CDO利用 | SMTPサービス |
---|---|---|
Windows 2000 Professional | ○ | ○(デフォルトOK) |
Windows 2000 Server | ○ | ○(デフォルトOK) |
Windows XP Professional | ○ | ○(デフォルトOK) |
Windows XP Home Edition | ○ | × |
Windows Server 2003 | ○ | △(要マニュアル設定) |
VBS の場合、次のように書きます。
Set objCdoMessage = CreateObject("CDO.Message") With objCdoMessage .From = "送信元名 <xxxxx@example.com>" .To = "送信先名 <yyyyy@example.com>" .Subject = "件名" .TextBody = "メッセージ" .Send End With Set objCdoMessage = Nothing
たったこれだけでメールを送ることができます。
ただし、上の表で SMTP サービスが、×になっている Windows XP Home Edition は 次のサンプルのように 外部の SMTP サービスを指定する必要があります。
Const cdoSendUsing = _ "http://schemas.microsoft.com/cdo/configuration/sendusing" Const cdoSmtpServer = _ "http://schemas.microsoft.com/cdo/configuration/smtpserver" Const cdoSmtpServerPort = _ "http://schemas.microsoft.com/cdo/configuration/smtpserverport" Set objCdoMessage = CreateObject("CDO.Message") With objCdoMessage .Configuration.Fields.Item(cdoSendUsing) = 2 .Configuration.Fields.Item(cdoSmtpServer) = "mail.example.com" .Configuration.Fields.Item(cdoSmtpServerPort) = 25 .Configuration.Fields.Update .From = "送信元名 <xxxxx@example.com>" .To = "送信先名 <yyyyy@example.com>" .Subject = "件名" .TextBody = "テストメッセージです" .Send End With Set objCdoMessage = Nothing
この例では mail.example.com の 25 番ポートを SMTP サーバとして指定しています。
ちなみに Const で定義している URL は アクセスするのではなく SMTP サーバを設定するための 識別子として利用されます。