我在 config/application.rb 上有关注
config.action_mailer.default_url_options = { :host => 'xxxxx.com' }
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = false
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => "smtp.mandrillapp.com",
:port => 587,
:domain => 'xxxxx.com',
:user_name => 'xxx.xxxxx@gmail.com',
:password => 'xxxxxxxxxxxxxxxx',
:authentication => 'plain',
:enable_starttls_auto => true }
在 app/mailers/welcome_mailer.rb
def welcome_email(user)
@user = user
@lang=I18n.locale
if @user.email.present?
begin
headers = {
:subject => welcome_email_subject(@user).to_s,
:from => ADMINISTRATIVE_EMAIL,
:to => user.email
}
mail(headers)
rescue Exception => e
abort
end
end
end
我在 /app/views/welcome_mailer/welcome_email.html.erb 上有一个模板
我正在使用此邮件操作通过 devise 发送欢迎电子邮件和确认链接。为此,我在 /config/initializers/welcome_mailers.rb 上完成了以下操作
module Devise::Models::Confirmable
def send_on_create_confirmation_instructions
if self.email
WelcomeMailer.welcome_email(self).deliver
end
end
def send_reset_password_instructions
generate_reset_password_token! if should_generate_reset_token?
WelcomeMailer.generate_password(self).deliver
end
end
尽管我使用相同的 smtp 配置进行开发,但我在生产中发送的邮件的正文是空的,并且在开发(本地)中也可以正常工作。顺便说一下,我的生产环境是 Amazon EC2。最初 15 天前我遇到了同样的问题,我通过更改 smtp 帐户解决了。现在它没有按任何顺序发生。建议您提出反馈或意见。