今回は Amazon Simple Email Service (Amazon SES) です。 Amazon SESはいわゆるメール送信サービスで、SMTPサーバの機能を提供するサービスです。 EC2などAWS上のサーバが使うSMTPサーバとして使用することができます。というか、いわゆるSMTPサーバなので、普通にThunderbirdなどのメーラ(MUA)からメール送信すると、自前のプログラムからメールを送信するとかにも利用可能です。 やってみる †送信元アドレスの登録 †リージョンは下記の3つしかまだないようなので今回は「米国東部 (バージニア北部)」( us-east-1 )を選択しました。 Amazon SESは IMAPなどのメールサービスではないので、送信元となるメールアドレスは自分で準備しておきます。 その送信元となる Email アドレスを登録するため、メニューの「Email Addresses」 を選択。 「Verify a New Email Address」 をクリック 送信元の Email アドレスを入力して、「Verify This New Email Address」をクリックします。 すると、該当アドレスに本人確認のためのメールが飛んできます。 飛んできた確認メールを処理すると、ほどなくしてStatusが下記の通り「pending verification」から「verified」となるはずです。 以上で、送信元アドレスの登録が完了しました。 サンドボックスについて †Amazon SES サンドボックス外への移動 - Amazon Simple Email Service にあるとおり、スパムとか不正行為の抑止のためにAmazon SES は初期状態では「サンドボックス」内での運用になっているようです。 この状態だと 送信元の本人確認だけでなく送信先の本人確認も必要など、いろいろな制限があるようです。Amazon SESを本番運用で使用したい場合は、サンドボックス外に移動するための手続き(申請)を行う必要があります。 サンドボックス外に移動するための申請とは具体的には Amazon SESの送信制限を解除する(SandBoxの外へ移動する) | infoScoop開発者ブログ などに書いてあることをすればよいのですが、いったん今回は、送信先のアドレスも上記と同様のやり方で、Amazon SESに登録しておきます。 SMTPユーザの作成 †つづいて、このSMTPサーバを使うためのユーザを作成します。 SMTP Settingsの「Create My SMTP Credentials」 をクリックします。 あ、ちなみにココのページに書いてある Server Name: email-smtp.us-east-1.amazonaws.com がSMTPサーバ名となっています。 SMTPのユーザ名は、AWSの IAM ユーザの「アクセスキー ID」になります。この画面では IAMユーザ名を指定してユーザを作成しますが、メール送信に使用するSMTPユーザ名は「アクセスキー ID」なので、IAMユーザ名はデフォルトのままでもよいかもしれません。 「作成」をクリックするとIAMユーザが作成されます。そのユーザの「アクセスキーID」と「シークレットアクセスキー」が、SMTPユーザのユーザ名とパスワードになります。「アクセスキーID」と「シークレットアクセスキー」は、作成完了画面で下記のとおり確認することができます。 以上でSMTPユーザの作成が完了しました。 ThunderbirdなどのメーラのSMTP設定 †さて、もろもろの設定やSMTPユーザの作成が完了したので、ThunderbirdなどのメーラにSMTPの設定をおこなってメール送信してみてください。 具体的には
などを設定すればOKです。 プログラムから送ってみる †さいごに、プログラムから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 でメールが送信されると思います。 おつかれさまでした。 コマンドラインから稼働確認 †Network/メールサーバ/送信テスト/暗号化アリSMTP-AUTH 関連リンク †
この記事は 現在のアクセス:4306 |