メール送信周りでちょっとはまりかけたのでメモ(上記エラー)
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