Railsで完全な初心者です。誰かがactionmailerを使用してサインアップした後でメールを送信しようとしています。
ログにメールが送信されていると記載されているが、Gmailがそれを取得しない
config/initializers/setup_mail.rb
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "asciicasts.com",
:user_name => "asciicasts",
:password => "secret",
:authentication => "plain",
:enable_starttls_auto => true
}
mailers/user_mailer.rb
class UserMailer < ActionMailer::Base
default :from => "[email protected]"
def registration_confirmation(user)
mail(:to => user.email, :subject => "Registered")
end
end
controllers/users_controller.rb
...
def create
@user = User.new(params[:user])
if @user.save
UserMailer.registration_confirmation(@user).deliver
sign_in @user
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
else
render 'new'
end
end
...
ありがとう!
config/environments/development.rb
にこのオプションが設定されていることを確認してください:
config.action_mailer.delivery_method = :smtp
また、ActionMailer::Base.smtp_settings
では、有効なGmailアカウントを指定する必要があります。コピー貼り付け(asciicast)は、ここではカットしません。
参考のためにこの質問を参照してください: Rails開発環境では3)でメールを送信する
「smtp」の代わりに「sendmail」を使用できます
ActionMailer::Base.delivery_method = :sendmail
ActionMailer::Base.sendmail_settings = { :address => "smtp.gmail.com",
:port => "587", :domain => "gmail.com", :user_name => "[email protected]",
:password => "yyy", :authentication => "plain", :enable_starttls_auto => true }
私がセットアップした新しいメーラーで、同じ問題に遭遇しました。この新しいメーラーがメールを送信できなかった理由を理解できず、メーラーのメソッドにアクセスできなかったのです。
deliver_now
またはdeliver*
メーラー内のコード。メールを送信しません。
def email_message()
message = mail(to: User.first, subject: 'test', body: "body text for mail")
message.deliver_now
end
#Different class; in my case a service
def caller
message = MyMailer.email_message
message.deliver_now
end
def email_message()
mail(to: User.first, subject: 'test', body: "body text for mail")
end
これで問題が解決しました。他の誰かが問題を解決してくれることを願っています。