Actionmailer在开发中不会发送电子邮件,即使控制台中显示“已发送”。
gemlist:
gem 'send_grid'development.rb:
config.action_mailer.perform_deliveries = true
config.action_mailer.default_url_options = { :host => "localhost:3000" }setup_mail.rb:
ActionMailer::Base.smtp_settings = {
:address => "smtp.sendgrid.net",
:port => '587',
:domain => "heroku.com",
:user_name => "app123456789@heroku.com",
:password => "asdfasdfasdf",
:authentication => :plain,
:enable_starttls_auto => true
}app/mailers/user_mailer.rb:
class UserMailer < ActionMailer::Base
include SendGrid
def registration_confirmation(user)
@user = user
mail(:to => user.email, :subject => "Registered", :from => "media@myemail.com")
end
endapp/views/user_mailer/registration_confirmation.html.haml:
Confirm your email address please!
= accept_invitation_users_url(email_token: @user.email_token)控制台:
Sent mail to alain@myemail.com (656ms)
Date: Tue, 11 Feb 2014 13:35:11 -0500
From: media@myemail.com
To: alain@myemail.com
Message-ID: <52fa6d5f667ea_27ce5564820279f3@Ice-box.mail>
Subject: Registered
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
X-SMTPAPI: {}
Confirm your email address please!
http://localhost:3000/users/accept_invitation?email_token=_JL8DQ2GItxl
Redirected to http://localhost:3000/
Completed 302 Found in 1396ms (ActiveRecord: 192.2ms)发布于 2014-02-12 09:54:53
您可以尝试设置:
config.action_mailer.raise_delivery_errors = true,查看它是否在传递时引发任何错误。否则,请尝试使用其他电子邮件或将其签入您的垃圾文件夹
或者在开发模式下尝试,检查是否有任何问题(看起来很好,因为您可以在控制台中看到确认)
发布于 2014-02-12 17:13:03
将config.action_mailer.raise_delivery_errors = true添加到production.rb或development.rb并重新启动应用程序以使更改生效
发布于 2014-02-13 14:56:34
将此放在smtp设置之前:
config.action_mailer.raise_delivery_errors = true在调用电子邮件方法的末尾添加".deliver“,即:
UserMailer.welcome_email(@user).deliver它将引发异常,帮助您找到失败的原因。
如果您正在使用后台作业发送电子邮件,您可以将此代码片段放在异常块中,并使用ExceptionNotification gem发送包含详细信息的电子邮件,这将帮助您轻松捕获并找到失败的原因。
https://stackoverflow.com/questions/21716379
复制相似问题