JScriptでメール送信

## はじめに

JScriptからSMTP経由でメールを送信するサンプルコードです。
「CDO.Message」を利用します。

## メール送信

単純なサンプルコードです。

```js
// 「CDO.Message」オブジェクト生成
var cdoMsg = new ActiveXObject("CDO.Message");
// 送信元設定
cdoMsg.From = "from@xxx.com";
// 送信先設定
cdoMsg.To = "to@xxx.com";
// 題名設定
cdoMsg.Subject = "題名";
// 本文設定
cdoMsg.Textbody = "本文";
//　※１

// CDOオブジェクトコンフィグ用NAMESPACE
var namespace = "http://schemas.microsoft.com/cdo/configuration/";
// 送信にネットワークを利用、「2」(cdoSendUsingPort)を設定
cdoMsg.Configuration.Fields.Item(namespace + "sendusing") = 2;
// SMTPサーバ設定
cdoMsg.Configuration.Fields.Item(namespace + "smtpserver") = "smtp.server";
// SMTPポート設定
cdoMsg.Configuration.Fields.Item(namespace + "smtpserverport") = 25;
//　※２

// コンフィグアップデート
cdoMsg.Configuration.Fields.Update();

// メール送信
cdoMsg.Send();

// 後処理
cdoMsg = null;
```

### ファイル添付

ファイルを添付する場合は、「※１」部分に以下を付け足します。

```js
// ファイルを添付
cdoMsg.AddAttachment("添付するファイルのフルパス");
```

### SMTP認証

SMTP認証が必要な場合、「※２」 部分に以下を付け足します。

```js
// Basic認証、「1」(cdoBasic)を設定
cdoMsg.Configuration.Fields.Item(namespace + "smtpauthenticate") = 1;
// 認証ユーザ設定
cdoMsg.Configuration.Fields.Item(namespace + "sendusername") = "username";
// 認証パスワード設定
cdoMsg.Configuration.Fields.Item(namespace + "sendpassword") = "password";
```

***

## Gmailからメール送信

GmailのSMTPからメールを送信するサンプルです。
Gmailの場合、認証、SSL通信の設定が必要となります。

```js
// 「CDO.Message」オブジェクト生成
var cdoMsg = new ActiveXObject("CDO.Message");
// 送信元設定
cdoMsg.From = "username@gmail.com";
// 送信先設定
cdoMsg.To = "to@xxx.com";
// 題名設定
cdoMsg.Subject = "題名";
// 本文設定
cdoMsg.Textbody = "本文";

// CDOオブジェクトコンフィグ用名前空間
var namespace = "http://schemas.microsoft.com/cdo/configuration/";
// 送信にネットワークを利用、「2」(cdoSendUsingPort)を設定
cdoMsg.Configuration.Fields.Item(namespace + "sendusing") = 2;
// SMTPサーバ設定
cdoMsg.Configuration.Fields.Item(namespace + "smtpserver") = "smtp.gmail.com";
// SMTPポート設定
cdoMsg.Configuration.Fields.Item(namespace + "smtpserverport") = 465;
// Basic認証、「1」(cdoBasic)を設定
cdoMsg.Configuration.Fields.Item(namespace + "smtpauthenticate") = 1;
// 認証ユーザ設定
cdoMsg.Configuration.Fields.Item(namespace + "sendusername") = "username@gmail.com";
// 認証パスワード設定
cdoMsg.Configuration.Fields.Item(namespace + "sendpassword") = "password";
// SSLを使用
cdoMsg.Configuration.Fields.Item(namespace + "smtpusessl") = true;

// コンフィグアップデート
cdoMsg.Configuration.Fields.Update();

// メール送信
cdoMsg.Send();

// 後処理
cdoMsg = null;
```

## 「Message」オブジェクト

送信元「From」送信先「To」題名「Subject」本文「Textbody」などは、
「IMessage」インターフェースで定義されています。
一部分を以下にまとめました。

|名前|概要|
|:--|:--|
|TO|送信先メールアドレス|
|From|送信元メールアドレス|
|Subject|題名|
|TextBody|本文|
|HTMLBody|HTML形式本文|
|CC|CC先アドレス|
|BCC|BCC先アドレス|
|ReplyTo|返信先アドレス|

これらは、フィールドを設定する事でも可能です。

```js
// 送信元設定
cdoMsg.From = "from@xxx.com";
// 送信先設定
cdoMsg.To = "to@xxx.com";
// 題名設定
cdoMsg.Subject = "題名";
// 本文設定
cdoMsg.Textbody = "本文";
```

↑↑↑この部分は、↓↓↓これに置き換えても可能です。
最後にコンフィグアップデートを忘れないで下さい。

```js
// 送信元設定
cdoMsg.Fields.Item("urn:schemas:mailheader:from") = "from@xxx.com";
// 送信先設定
cdoMsg.Fields.Item("urn:schemas:mailheader:to") = "to@xxx.com";
// 題名設定
cdoMsg.Fields.Item("urn:schemas:mailheader:subject") = "題名";
// 本文設定
cdoMsg.Fields.Item("urn:schemas:httpmail:textdescription") = "本文";
// コンフィグアップデート
cdoMsg.Fields.Update();
```