【问题标题】:Handling Email Bouncebacks in Rails在 Rails 中处理电子邮件退回
【发布时间】:2021-08-22 06:45:38
【问题描述】:

我已经为我的 rails 应用程序构建了一个非常基本的 CRM 系统,它允许我发送带有自定义文本的每周用户活动摘要,并创建可以通过基本管理界面配置和发送的多部分营销消息。我对我在发送端汇总的内容感到满意(减去我没有尝试对其功能进行批量测试的事实),但我担心如何处理反弹。

我发现了这个带有相关脚本的插件:http://github.com/kovyrin/bounces-handler

我正在使用 Google Apps 来处理我的邮件,但我对 Perl 的了解还不够多,以至于想弄乱上面的插件 - 我已经够头疼了。

我正在寻找一种在 Rails 中处理反弹的简单解决方案。我所有的电子邮件都会从一个类似这样的地址发出,该地址将在 Google Apps 中进行管理:“news@mydomain.com”。

最好的工作流程是什么?任何人都可以发布他们正在使用的示例解决方案,记住我正在使用 Google Apps 发送邮件这一事实吗?

任何指导、链接或处理此问题的基本工作流最佳实践将不胜感激。

谢谢! -A

【问题讨论】:

  • btw - 500 限制/天,非企业谷歌邮件
  • 谢谢 Sam,希望这不会是问题。

标签: ruby-on-rails email email-bounces


【解决方案1】:

好的,事实证明,这比我想象的使用 Github 上的 Fetcher 插件更容易。对于那些对似乎可行的方法感兴趣的人,这是我所做的:

1) 像这样安装 Fetcher 插件:script/plugin install git://github.com/look/fetcher.git

2) 说明建议您运行生成器来创建守护进程,如下所示:script/generate fetcher_daemon MailerDaemon。我建议这样做,因为它会在 config/ 中生成一个 YML 文件,您可以使用您的邮件服务器信息(在我的情况下为 Gmail)进行修改。

它还会生成一个守护进程来运行 Fetcher。我尝试使用它,但始终收到以下错误:Mysql::Error: MySQL server has gone away: SHOW FIELDS FROM email_blacklists。这是在 MySQL 可以存储记录之前守护进程消失的结果,所以我放弃了使用守护进程并设置了一个 cron。

3) 在 config 中配置 .yml 文件,我使用您的邮件设置将其重命名为 mail.yml。对于 gmail pop,它们看起来像这样:

development:
  type: pop
  server: pop.gmail.com
  port: 995
  ssl: true
  username: myemailaddress@gmail.com
  password: mypassword

这是您需要处理的代码:

models/mail_processor.rb

class MailProcessor < ActionMailer::Base
  def receive(email)
    email = EmailBlacklist.find_or_create_by_email(email.to.first)

  end
  def self.grab_bounces
    config = YAML.load_file("#{RAILS_ROOT}/config/mail.yml")
    config = config[RAILS_ENV].to_options
    fetcher = Fetcher.create({:receiver => MailProcessor}.merge(config))
    fetcher.fetch
  end
end

lib/tasks/mail.rake

namespace :email do
  desc "sends various types of marketing and automated emails and processes bouncebacks"
  task(:process_bounces => :environment) do
    MailProcessor.grab_bounces
  end
end

然后您可以将自动生成的 mailer_daemon_fetcher.rb 文件扔到您的 scripts/ 目录中。

希望这对其他人有所帮助。如果您想进行测试,只需从控制台调用 MailProcessor.grab_bounces。确保您的收件箱中有一些您配置为可以访问的电子邮件。

【讨论】:

    猜你喜欢
    • 2021-11-13
    • 2011-03-24
    • 2011-03-09
    • 2010-11-03
    • 2011-05-24
    • 2019-04-04
    • 1970-01-01
    • 2012-03-24
    • 2023-03-26
    相关资源
    最近更新 更多