- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2018-07-02T07:18:32+00:00","default:masatomix","masatomix")
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
今回は Amazon Simple Email Service (Amazon SES) です。
Amazon SESはいわゆるメール送信サービスで、SMTPサーバの機能を提供するサービスです。
EC2などAWS上のサーバが使うSMTPサーバとして使用することができます。というか、いわゆるSMTPサーバなので、普通にThunderbirdなどのメーラ(MUA)からメール送信すると、自前のプログラムからメールを送信するとかにも利用可能です。
**やってみる [#yc2b0794]
*** 送信元アドレスの登録 [#u8d7bfd8]
リージョンは下記の3つしかまだないようなので今回は「米国東部 (バージニア北部)」( us-east-1 )を選択しました。
#ref(IMG_3817.png)
Amazon SESは IMAPなどのメールサービスではないので、送信元となるメールアドレスは自分で準備しておきます。
その送信元となる Email アドレスを登録するため、メニューの「Email Addresses」 を選択。
#ref(IMG_3818.png)
「Verify a New Email Address」 をクリック
#ref(IMG_3819.png)
送信元の Email アドレスを入力して、「Verify This New Email Address」をクリックします。
#ref(IMG_3820.png)
すると、該当アドレスに本人確認のためのメールが飛んできます。
飛んできた確認メールを処理すると、ほどなくしてStatusが下記の通り「pending verification」から「verified」となるはずです。
#ref(IMG_3821.png)
以上で、送信元アドレスの登録が完了しました。
***サンドボックスについて [#x80eeb61]
[[Amazon SES サンドボックス外への移動 - Amazon Simple Email Service>http://amzn.to/2IxOurb]] にあるとおり、スパムとか不正行為の抑止のためにAmazon SES は初期状態では「サンドボックス」内での運用になっているようです。
この状態だと 送信元の本人確認だけでなく''送信先の本人確認も必要''など、いろいろな制限があるようです。Amazon SESを本番運用で使用したい場合は、サンドボックス外に移動するための手続き(申請)を行う必要があります。
サンドボックス外に移動するための申請とは具体的には [[Amazon SESの送信制限を解除する(SandBoxの外へ移動する) | infoScoop開発者ブログ>https://www.infoscoop.org/blogjp/2015/07/29/amazon-ses-release-limit/]] などに書いてあることをすればよいのですが、いったん今回は、''送信先のアドレス''も上記と同様のやり方で、Amazon SESに登録しておきます。
*** SMTPユーザの作成 [#b866de46]
つづいて、このSMTPサーバを使うためのユーザを作成します。
SMTP Settingsの「Create My SMTP Credentials」 をクリックします。
あ、ちなみにココのページに書いてある
Server Name: email-smtp.us-east-1.amazonaws.com
がSMTPサーバ名となっています。
#ref(IMG_3822.png)
SMTPのユーザ名は、AWSの IAM ユーザの「アクセスキー ID」になります。この画面では IAMユーザ名を指定してユーザを作成しますが、メール送信に使用するSMTPユーザ名は「アクセスキー ID」なので、IAMユーザ名はデフォルトのままでもよいかもしれません。
#ref(IMG_3823.png)
「作成」をクリックするとIAMユーザが作成されます。そのユーザの「アクセスキーID」と「シークレットアクセスキー」が、SMTPユーザのユーザ名とパスワードになります。「アクセスキーID」と「シークレットアクセスキー」は、作成完了画面で下記のとおり確認することができます。
#ref(IMG_3824.png)
以上でSMTPユーザの作成が完了しました。
*** ThunderbirdなどのメーラのSMTP設定 [#q09825f9]
さて、もろもろの設定やSMTPユーザの作成が完了したので、ThunderbirdなどのメーラにSMTPの設定をおこなってメール送信してみてください。
具体的には
- STMPサーバ名: email-smtp.us-east-1.amazonaws.com
- ポート番号: 465 ← 587とかでもいけるかも
- 接続の保護: SSL/TLS ← START TLS でもいけるかも
- ユーザ名: IAM ユーザの アクセスキー ID
- パスワード: IAM ユーザの シークレットアクセスキー
などを設定すればOKです。
#ref(009_th.png)
*** プログラムから送ってみる [#y7198361]
さいごに、プログラムからSMTPを指定してメールを送信してみます。Nodejsにはメール送信するライブラリ nodemailerというのがあるので、コレを使いました。
Githubに置いてあるので、適宜参照ください。
$ git clone https://github.com/masatomix/nodejs-samples.git -b feature/ses_mail
$ cd nodejs-samples
設定ファイルは以下の通り:
$ cat config/default.json
{
"smtp": {
"host": "email-smtp.us-east-1.amazonaws.com",
"port": 465,
"secure": true,
// true for 465, false for other ports
"auth": {
"user": "AKIAxxxxxxxxxxx", ← 正しいものに変更
"pass": "Aixxxxxxxxxxxxxxxxxxxxx" ← 正しいものに変更
}
},
"mail": {
"from": "from@example.com", ←送信元アドレス
"to": "to@example.com" ← 送信先アドレス
}
}
送信プログラムは以下の通り:
$ cat index.js
"use strict";
const me = this;
const logger = require('./logger');
const config = require('config');
const nodemailer = require("nodemailer");
module.exports.execute001 = () => {
const transporter = nodemailer.createTransport(config.smtp);
const mailOptions = {
from: config.mail.from,
to: config.mail.to,
subject: 'test mail',
text: 'メール送信テスト'
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
logger.console.error("send mail failed.");
logger.console.error(error.message);
}
logger.console.debug("send mail success.");
logger.console.debug('Message sent: %s', info.messageId);
});
};
me.execute001();
プログラムを実行してみます。やりかたは、あ、Nodejsが入ってる前提ですが
$ npm install
$ npm start
でメールが送信されると思います。
おつかれさまでした。
**関連リンク [#d1dbde66]
-[[Amazon SES(高信頼性で安価なEメールサービス - Amazon Simple Email Service)| AWS>http://amzn.to/2HLwZma]]
-[[Amazon SESの送信制限を解除する(SandBoxの外へ移動する) | infoScoop開発者ブログ>https://www.infoscoop.org/blogjp/2015/07/29/amazon-ses-release-limit/]]
-[[知ってる?nodemailerを使ってメールを送る方法 - RAKUS Developers Blog>http://tech-blog.rakus.co.jp/entry/2017/09/07/110411]]
-[[コマンドラインを使用し、Amazon SES SMTP インターフェイスを介して E メールを送信する - Amazon Simple Email Service>https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/send-email-smtp-client-command-line.html]]
-[[コマンドラインを使用し、Amazon SES SMTP インターフェイスを介して E メールを送信する - Amazon Simple Email Service>https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/send-email-smtp-client-command-line.html]] コマンドプロンプトからの疎通(OpenSSLが必要ですが)。
-[[telnetコマンドでSMTP認証を確認するには - 逆引き集 - CentOSで自宅サーバー構築>https://centossrv.com/memo/log/18.shtml]] SSLでない場合はTelnetで。
-[[smtp4dev ダウンロードできなくなった | | Tomehachi>http://blog.tomehachi.net/%E9%96%8B%E7%99%BA%E5%85%A8%E8%88%AC/smtp4dev-cannot-download/]]
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}