【Sinatra】ponyを使ってコンタクト・メールフォームを作る

ponyのREADMEを参考にしながらSinatraアプリでコンタクトフォームを作ってみる。コンタクトフォームに情報を入力して送信したら、メールが届く仕組み。

benprew/pony · GitHub

mail送信用のgem , ponyを使う。 | 毒林檎のblog

ルートがPOSTでhttpのリクエストをもらったときにPonyでメールを送信する。

require 'sinatra'
require 'pony'

...

post '/' do
  name = params[:name]
  email = params[:email]
  message=params[:message]

  @isSuccessSendingEmail = 
    Pony.mail(:to => "yuta.totz@gmail.com",
              :body => message,
              :subject => "Contact from Web Site of Techlab",
              :from => "#{name}<#{email}>",
              :via => :smtp, 
              :via_options => {
                :enable_starttls_auto => true,
                :address => "smtp.gmail.com",
                :port => "587",
                :user_name => "yuta.totz@gmail.com",
                :password => "password for your app",
                :authentication => :plain,
                :domain => "gmail.com"
              }
    )

  erb :index
end

エラーが出たのでぐぐってみたら、以下の記事が。

Ruby - 【メール送信エラー】Net::SMTPAuthenticationError - 534-5.7.14 <https://accounts.google.com/ContinueSignIn ... - Qiita

googleのアカウントで2段階認証をonにして、特定のアプリのパスワードを設定したら、無事送信できるようになりました!!!!

環境変数を使ってパスワードを扱う方法もまとめておこう。