【问题标题】:ActionMailer Settings for Gmail with Rails 3.2 running on Amazon EC2 Instance在 Amazon EC2 实例上运行 Rails 3.2 的 Gmail 的 ActionMailer 设置
【发布时间】:2013-01-29 18:52:37
【问题描述】:

背景

尝试解决在 Amazon EC2 的 Ubuntu 实例上运行的 Rails 3.2.x 中 ActionMailer 的 Gmail 设置问题。该应用程序使用 Nginx + Passenger 运行。

设置如下

文件:config/environments/production.rb

config.action_mailer.delivery_method = :smtp
      config.action_mailer.smtp_settings = {
         :address => "smtp.gmail.com",
         :port => 587,
         :domain => "gmail.com",
         :authentication => :plain,
         :user_name => "<username>@gmail.com",
         :password => "<secret-word>",
         :enable_starttls_auto => true
 }

电子邮件正在使用 Google 帐户,已通过网络登录验证并发送测试消息。

控制器通过如下方法发起发送:

email_list_controller.rb

def email_test_send
   @email = params[:email]
   @message = Message.find(params[:id])

   @member = Member.find_by_last_name("Bloggs")
   MemberMailer.delay.all_member_email(@member.email, @message)

   redirect_to messages_path, :notice => "Test Email has been sent."
 end

MemberMailer 类定义为:

class MemberMailer < ActionMailer::Base
  default from: "blah@gmail.com"
  default cc: "blah1@gmail.com, blah2@gmail.com"
  default content_type: "text/html"

  # send a message to member
  def all_member_email(email, message)

      @message = message
      mail(:to => email, :subject => message.subject)
  end

结束

系统正在使用 Delayed_Job Gem 进行后台处理,并且发送已经过使用和不使用后台作业处理的测试。;

结果

问题是没有消息发送,出现以下情况

  1. production.log 中的输出(log_level 设置为 DEBUG

    由 EmailListController#email_test_send 处理为 HTML 参数:{"utf8"=>"✓", "authenticity_token"=>"D5ZCb+Ha63WbPmd47/1/P3rpFJFiSbnrYya+YaSmBic=", "email"=>"blah@gmail.com", "commit"=>"提交", "id"=>"1", "method"=>"post"}

  2. 没有消息传递

  3. Google 帐户已发送文件夹不显示任何出站邮件详细信息。

  4. 已验证 EC2 上的服务器可以通过 telnet 587

  5. 连接到 Google SMTP 服务器
  6. 调查了其他 StackOverflow 问题,例如 Setting up a Gmail Account to work with ActionMailer in Rails 3

  7. delayed_jobs 表中的数据库中没有故障。

所以卡在任何其他领域看?我尝试重新启动服务器以确保干净加载配置文件等,但没有运气。

【问题讨论】:

    标签: ubuntu amazon-ec2 ruby-on-rails-3.2 gmail actionmailer


    【解决方案1】:

    确保你在config/environments/production.rb中设置了这两个选项:

    config.action_mailer.raise_delivery_errors = true
    config.action_mailer.perform_deliveries = true
    

    【讨论】:

      猜你喜欢
      • 2013-04-29
      • 2012-02-12
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 2014-09-14
      • 2012-01-15
      相关资源
      最近更新 更多