Rails邮件发送在电子邮件上的空身体

时间:2013-12-03 10:49:34

标签: ruby-on-rails-3 devise amazon-ec2 actionmailer mandrill

我在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帐户解决了。现在没有按任何顺序发生。请提出您的反馈或意见。

1 个答案:

答案 0 :(得分:0)

您可以在邮件程序配置中覆盖模板路由:

class WelcomeMailer < ActionMailer::Base
  ...
  self.template_root = "#{RAILS_ROOT}/app/views/mailers" # Rails.root in 3.x
  ...
end