- Heroku に Redmine を立てた
- Heroku からはメールが配信できないので,外部SMTPサーバー等を利用する必要がある
- 今回はHerokuのアドオンとして提供されている SendGrid [1] を利用した
- Redmine の構築は基本的には [2] を参考に行った(ので,割愛)
Redmine のメール配信に SendGrid を利用する
- アドオンの画面からSendGridを選ぶ
- https://addons.heroku.com/sendgrid
- プランと利用するAppの名前を選択して,Add ボタンを押す
- もしくは,手元から
heroku addons:add sendgrid:plan
でも追加できる - Starter(Free)プランだと200通/日メールを送ることができる
Redmine のから SendGrid を利用するように設定する
- SendGrid をアドオンとして追加すると,アプリケーションの設定としてユーザ名とパスワードがHeroku上で設定された状態になる
-
$ heroku config
で一覧することができる
$ heroku login
$ heroku config
DATABASE_URL: postgres://~~~
...
SENDGRID_PASSWORD: ****
SENDGRID_USERNAME: ****@heroku.com
- この値は環境変数として設定されているので,Rails(Ruby)側から簡単に取得することができる
- config/configuration.yml を編集(config/configuration.yml.example からコピー)
- 例として記述されている(コメントアウトされている)行以外は削除するのがおすすめ(コメントアウトされていない行を見落とし,デフォルト値として読み込まれてハマった)
config/configuration.yml
default:
email_delivery:
delivery_method: :smtp
- config/environment.rb にメールサーバーの情報をそのまま書くこともできそうだが,どう頑張ってもエラーになってしまって利用できなかったため,実際の設定は config/environments/production.rb と分割して書いた(参考 [3])
- config/environments/production.rb を編集
- 最下部(
RedmineApp::Application.configure do ~ end
の外側)に下記を追記
confit/environments/production.rb
ActionMailer::Base.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'heroku.com'
}
ActionMailer::Base.delivery_method = :smtp
- これを Heroku へ push することで,SendGrid をメール配信に利用することができる
- .gitignore ファイルに config/configuration.yml がリストされている場合は削除する必要がある
SendGrid のダッシュボード
- Heroku ダッシュボードからSnedGridのダッシュボードを見に行くことができる
- 何通送った,何通届いた,オープンされた(トラッキングするかの設定が必要)などが見られる