VBS から CDO コンポーネントで簡単にメールを送信する

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 サーバを設定するための 識別子として利用されます。

Google サイト内検索

Amazonアソシエイト