メール送信周りでちょっとはまりかけたのでメモ(上記エラー)
ponyというgemを使ってSMTPでメール送信をしようとしてました。
サイトからユーザーが申し込みしてきたら、申込完了メールをユーザーに送信するイメージです。
★環境
・Ruby
・pony on sinatra
・Gmailで送信(from @gmail.com)
たぶんRails(ActionMailer)でもあまり変わらないと思います。
普通にドキュメントに書かれてる通り実装すると、
Net::SMTPAuthenticationError - 534-5.7.14 <https://accounts.google.com/ContinueSignIn ...
というエラーが出てしまいました。
http://www.google.com/accounts/DisplayUnlockCaptcha
上記にアクセスして許可すればいいとう記事もありましたが、うまくいかず。
結論をいうと、送信したいGmailアカウントの設定から2段階認証を有効にして、
アプリ固有のパスワードを作り、実装にそのパスワードを組み込むのが手っ取り早いと思います。
↑
左上の「2段階認証プロセス」の設定を有効にすると「アプリパスワード」という項目が現れるので設定してください。
以上でうまくいくと思います。
※参考までにponyを使った実装を載せておきます。
def send_complete_mail
  # charsetはデフォルトでutf-8なのですが、指定してないと怒られた気がします。
  Pony.mail(
    to: '送信先メールアドレス',
    subject: '件名',
    body: send_mail_body,
    charset: 'utf-8',
    via: :smtp,
    via_options: {
      address: 'smtp.gmail.com',
      user_name: 'アカウント名@gmail.com',
      password: 'アプリ固有のパスワード',
      authentication: :plain,
      domain: 'サイトのドメイン名'
    }
  )
end
def send_mail_body
  # send_mail.erbというファイルを用意しておけばよいです。
  # localsのハッシュでview内の変数に値を渡せます。
  erb :send_mail, locals: {
    hoge: session[:hoge],
    fuga: session[:fuga]
  }
end
