好的,事实证明这比我认为使用可以在 Github 上找到的 Fetcher 插件更容易。对于那些对似乎可行的方法感兴趣的人,这是我所做的:
1)像这样安装Fetcher插件: script/plugin install git://github.com/look/fetcher.git
2) 说明建议您运行生成器来创建守护进程,如下所示:脚本/生成 fetcher_daemon MailerDaemon。我建议这样做,因为它会在 config/ 中生成一个 YML 文件,您可以使用您的邮件服务器信息(在我的情况下为 Gmail)进行修改。
它还生成一个守护进程来运行 Fetcher。我尝试使用它,但始终出现以下错误: Mysql::Error: MySQL server has gone away: SHOW FIELDS FROM email_blacklists
。这是在 MySQL 可以存储记录之前守护进程消失的结果,所以我放弃了使用守护进程并设置了一个 cron。
3) 在配置中配置 .yml 文件,我使用您的邮件设置将其重命名为 mail.yml。对于 gmail pop,它们看起来像这样:
development:
type: pop
server: pop.gmail.com
port: 995
ssl: true
username: myemailaddress@gmail.com
password: mypassword
这是您需要处理的代码:
模型/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。确保您的收件箱中有一些您配置为可以访问的电子邮件。