一个关于rails项目的Ubuntu电子邮件处理的好例子

时间:2009-06-13 23:06:52

标签: ruby-on-rails email ubuntu

在VPS(Ubuntu 8.10)上运行rails 2.2.2应用程序时遇到问题:寻找github repos,帖子,以及涵盖正确设置电子邮件处理方式的任何内容。例如,它应该使用sendmail还是smtp?

2 个答案:

答案 0 :(得分:2)

这不是Ubuntu特有的。

配置邮件发送并没有真正的“正确”答案。如果您的sendmail正在使用sendmail(以便“mail foo@bar.com”正常工作),那么请使用它。

如果您有一台本地运行的SMTP服务器,那么可以使用它。

更具体的答案实际上取决于你说:

  • 你尝试了什么?
  • 它是怎么失败的?

答案 1 :(得分:0)

您是要发送还是接收电子邮件(或两者兼而有之)?

每种情况下的答案都不同,可能(或可能不)包括在VPS上配置邮件服务器。

如果你需要配置一个邮件服务器,我找到的最好的指南(广泛的和一步一步的)是你在这里找到的slicehost:Mail server setup and configuration

如果您只需要接收电子邮件,最好的办法是避免安装邮件服务器,让服务提供商(或Moogle)处理收到的电子邮件。

然后,您必须编写一些代码以从POP或IMAP服务器获取这些电子邮件,并将它们提供给传入邮件处理程序(通常基于ActionMailer)。编写提取代码的一种简单方法是使用fetcher插件,该插件包含以下与邮件服务器交互的常见模式:

  1. 连接到远程服务器(POP或IMAP)
  2. 下载可用消息
  3. 处理每条消息(将其传递给另一个对象)
  4. 从远程服务器中删除所有下载的消息
  5. 你需要创建类Fetcher的实例,传递将处理电子邮件的对象的类(以及所需的任何其他配置参数),然后调用fetch方法将执行上面的步骤1到4。 / p>

    插件位于Github上:http://github.com/look/fetcher/tree/master你可以用它来构建一个守护进程(即一个循环停留在循环中轮询邮件服务器以查找新邮件),或者编写一个批处理文件从cron运行(取自插件文档):

    begin
      Lockfile.new('cron_mail_fetcher.lock', :retries => 0) do
        config = YAML.load_file("#{RAILS_ROOT}/config/mail.yml")
        config = config[RAILS_ENV].to_options
    
        fetcher = Fetcher.create({:receiver => MailReceiver}.merge(config))
        fetcher.fetch
      end
    rescue Lockfile::MaxTriesLockError => e
      puts "Another fetcher is already running. Exiting."
    end
    
相关问题