Ruby(Rails)からメールを送信する必要のある仕事があったので、本採用するかは決めていませんが、Amazon SESをaws-sdk-rubyから使う方法について調査してみました。

■ 準備

1. マネジメントコンソールでEmailアドレスとドメインを登録してください
(ドメインの登録の際は、DKIMの設定も出力すると便利です。Easy DKIMという機能なのですが、ドメインの認証が完了した後、マネジメントコンソールで有効化すると、送信メールにDKIM署名を追加してくれます。迷惑メール扱いになる確率がいくらか減るでしょう。)

※ Request Production Accessするまでは、送信元、送信先ともに登録が必要です。

2. aws-sdk-rubyをインストールする

gem install aws-sdk


■ 手順

単純なので一気に書きます。

# encoding: utf-8
require 'rubygems'
require 'aws-sdk'
require 'nkf'

ses = AWS::SimpleEmailService.new(
  :access_key_id => 'YOUR_ACCESS_KEY_ID',
  :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')

body_text = NKF.nkf '-jw', <<-EOS
こんにちは。
このメールはテストメールです。

おしまい
EOS

subject = NKF.nkf('-Mw', 'サブジェクトです')

from_email = "FROM_EMAIL_ADDRESS"
to_email = "TO_EMAIL_ADDRESS"

p "Verified?(FROM Email): " + ses.identities[from_email].verified?.to_s
p "Verified?(TO Email): " + ses.identities[to_email].verified?.to_s
p "Verified?(Domain): " + ses.identities['YOUR_DOMAIN'].verified?.to_s

ses.send_email(
  :subject => subject,
  :to => to_email,
  :from => from_email,
  :body_text => body_text,
  :body_text_charset => 'ISO-2022-JP'
)


■ 参考情報

RubyからAmazon SESでメールを送る - プログラマになりたい

詳しいです。ただし、Easy DKIMに関する記載が無い(この記事時点ではEasy DKIMがなかったのかも)ので、DKIM関係は独自署名の方法になっています。これはこれで押さえておいた方がいい情報ですが、Easy DKIMを使う方が楽ではあると思います。

AWS SDK for RubyのAPIリファレンス
AmazonSES-Easy DKIM設定サポート資料

Posted by あかさた
最近のエントリ
最近の読書メモ