[英]Actionmailer says email sent but it never gets there (Rails 3)
即使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
}
應用程序/郵寄/ 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
end
應用程序/視圖/ 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)
您可以嘗試設置:
config.action_mailer.raise_delivery_errors = true
以查看是否在交付時引發任何錯誤。 否則,請嘗試使用其他電子郵件或將其檢查到您的垃圾文件夾中
或者在開發模式下嘗試此操作,以檢查是否存在任何問題(您可以在控制台中看到確認信息,這似乎很好)
將config.action_mailer.raise_delivery_errors = true
添加到production.rb或development.rb並重新啟動您的應用以使更改生效
將其放在您的smtp設置之前:
config.action_mailer.raise_delivery_errors = true
在調用電子郵件方法的末尾添加“ .deliver”,即:
UserMailer.welcome_email(@user).deliver
它將引發異常,這將幫助您查找失敗原因。
如果您正在使用后台作業發送電子郵件,則可以將此片段放在異常塊中,並使用ExceptionNotification gem來發送帶有詳細信息的電子郵件,這將幫助您輕松地發現並查找失敗的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.