HerokuでSendgridを使ってRailsでメール送信をする

メールを送るサービス Sendgrid を使ってHerokuでメール送信してみました
アカウントはheroku Addonを入れると勝手に作られ、Sendgridにログインすると利用状況など見れます

無料のstarterプランだと1日400通まで送れます

HerokunにAddonを入れて使います
https://elements.heroku.com/addons/sendgrid

herokuのaddonを入れるためにはクレジットカードの登録が必要になります

https://devcenter.heroku.com/articles/sendgrid#ruby-rails
を参考に設定をします

$ heroku addons:add sendgrid:starter

$ vim config/environments/production.rb

Rails.application.configure do
  # 省略
    config.action_mailer.delivery_method = :smtp
    config.action_mailer.smtp_settings = {
      :address        => 'smtp.sendgrid.net',
      :port           => '587',
      :authentication => :plain,
      :user_name      => ENV['SENDGRID_USERNAME'],
      :password       => ENV['SENDGRID_PASSWORD'],
      :domain         => 'heroku.com',
      :enable_starttls_auto => true
    }
end

USERNAMEとPASSWORDの確認は次のコマンドでできます
$ heroku config:get SENDGRID_USERNAME
$ heroku config:get SENDGRID_PASSWORD

動作確認するには
$ heroku run rails console
irb> ActionMailer::Base.mail(from: “sample@sample.com”, to: “sampleto@sample.com”, subject: “題名”, body: “本文”).deliver

で確認できます

RailsからActionMailerでGmailを利用してメールを送る

$ config/environments/develop.rb

Rails.application.configure do
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = { 
    address:               'smtp.gmail.com',
    port:                    587,
    domain:                'localhost:3000',
    user_name:             'ユーザー名',
    password:              'パスワード',
    authentication:        'plain',
    enable_starttls_auto:  true
  }
end

$ rails c

irb> ActionMailer::Base.mail(from: “sample@sample.com”, to: “sampleto@sample.com”, subject: “題名”, body: “本文”).deliver

でメール送信テストができます

Gmailだとエラーが
Net::SMTPAuthenticationError
が出るかと思います

この辺をみて
https://support.google.com/accounts/answer/6010255

この設定をOFFにすると
https://www.google.com/settings/security/lesssecureapps

できるようになります(セキュリティ的によくないけど)

2段階認証を設定して、アプリ用のパスワードを設定したほうがいいようです

rails db時にCouldn’t find database client: sqlite3.エラー

railsで遊んでいてデータベースを見ようとコマンド叩くとエラーがでました

$ rails db
Couldn’t find database client: sqlite3. Check your $PATH and try again.

あれ?と思ったけど、ふつうにsqlite3をインストールしてませんでした..
Ubuntuだったので

$ sudo apt-get intall sqlite3

で解決しました

vimでluaが足りないものがあって有効になってなかった

Centos6で最新のvimを入れる
でvimを入れましたが lua が有効になってない..

$ vim –version

で確認ができます

$ sudo yum install ncurses-devel perl-ExtUtils-Embed python-devel readline-devel gcc ruby-devel python-devel ruby lua-devel

を実行したらできました
(参考にしたものがどこだったか忘れてしまいました..)