【问题标题】:delayed_job send email with wrong sender on productiondelay_job 在生产中使用错误的发件人发送电子邮件
【发布时间】:2012-05-07 02:08:42
【问题描述】:

我在 Rails 3.1.3 上工作并使用 delay_job 3.0.1

我在有效的电子邮件发件人中发现电子邮件有问题。

首先我将 ActionMailer 设置为与 Gmail (xxx.gmail.com) 一起使用,它工作正常。

在我在生产服务器上部署了一段时间之后。

我已经设置了新的 ActionMailer 来使用我的邮件服务器。

并在开发中对其进行了测试。然后我将代码部署到生产服务器。它也可以正常工作。

但有时使用我的旧 Gmail (xxx.gmail.com) 作为发件人向客户发送电子邮件。 (正确发送,没有错误)

附言。我使用 rails_config gem 来保存电子邮件设置。

我已经尝试调试了 2 天,运气好。

  • 在生产服务器上多次打印Settings.mail_sender inside rails 控制台。它正确返回(“无回复”)
  • 重启delayed_job。
  • 重启服务器。
  • 尝试将发件人放入日志。 (当发件人不是 Gmail 时,它会写入日志)。
  • 检查我的项目,那里没有任何 gmail 设置或数据库。

这是我的代码

# config/settings/production.yml
  mail_sender: '"no-reply" <no-reply@myapp.com>'


# MyMailer.rb

default :from => Settings.mail_sender

def greeting(receiver)                   
  @receiver = receiver
  Delayed::Worker.logger.info "-------In inform client"
  Delayed::Worker.logger.info "========inform client from #{Settings.mail_sender}"

  mail(:to => "#{receiver.full_name} <#{receiver.email}>",
    :subject => "Hello") do |format|                   
      format.html
  end

  Delayed::Worker.logger.info inspect
end


# code I call the delayed_job
  MyMailer.delay.greeting(client) if client.can_receive_email?

有什么想法吗?谢谢。

【问题讨论】:

  • 不能是一个测试服务来处理邮件需要在生产中发送并“窃取”该事件/发送邮件吗?
  • 对不起。我不擅长英语。你的意思是?你能解释一下吗?

标签: ruby-on-rails ruby-on-rails-3.1 actionmailer delayed-job


【解决方案1】:

我已经将我的应用程序部署到新服务器(使用相同的数据),问题就消失了。

然后我尝试关闭旧服务器一段时间,然后再次启动旧服务器。

问题也消失了。看起来很混乱,就像僵尸线程卡在我的旧服务器上一样。

最后我发现了真正的问题,delayed_job 的进程卡在了我的服务器上,因为转储问题。

【讨论】:

    猜你喜欢
    • 2013-02-01
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多