【问题标题】:how to process incoming mails using mailman and update them into the database如何使用 mailman 处理传入的邮件并将它们更新到数据库中
【发布时间】:2012-02-01 11:17:28
【问题描述】:

正在开发 ruby​​ on rails3 应用程序,我正在向用户发送电子邮件,如果用户回复该电子邮件,那么该回复内容,日期应更新到数据库。为此,我有 ProductComment 模型。当管理员向用户发送评论时,它将存储在数据库中。如果用户对此作出答复,则应相应地更新数据库。我正在尝试使用邮递员。我已经安装了宝石。但是我不知道如何获取评论 ID,我应该在回复地址中写什么,在哪里写邮递员代码以及我应该从哪个邮件中阅读。

我正在发送这样的电子邮件:

mail(:to => @user.email, :subject => "Edit Your Product", :reply_to=>"abc@syz.com)

我正在像这样在产品控制器中处理它:

require 'mailman'
Mailman::Application.run do
to 'abc@xyz.com' do
ProductComment.create(message)
end
end

请帮助我摆脱这个问题

请告诉我如何在 ruby​​ on rails3 应用程序中使用 mailman gem

【问题讨论】:

    标签: ruby-on-rails-3 email incoming-mail mailman-gem


    【解决方案1】:

    最近有一集关于在 railscasts 上接收邮递员的电子邮件:http://railscasts.com/episodes/313-receiving-email-with-mailman

    chmod +x script/mailman_server
    cat mailman_test.eml | script/mailman_server
    script/mailman_server
    

    -

    # script/mailman_server
    #!/usr/bin/env ruby
    require "rubygems"
    require "bundler/setup"
    require "mailman"
    
    Mailman.config.logger = Logger.new("log/mailman.log")
    
    Mailman.config.pop3 = {
      server: 'pop.gmail.com', port: 995, ssl: true,
      username: ENV["GMAIL_USERNAME"],
      password: ENV["GMAIL_PASSWORD"]
    }
    
    Mailman::Application.run do
      default do
        begin
          Ticket.receive_mail(message)
        rescue Exception => e
          Mailman.logger.error "Exception occurred while receiving message:\n#{message}"
          Mailman.logger.error [e, *e.backtrace].join("\n")
        end
      end
    end
    

    -

    def self.receive_mail(message)
      ticket_id = message.subject[/^Update (\d+)$/, 1]
      if ticket_id.present? && Ticket.exists?(ticket_id)
        Ticket.update(ticket_id, body: message.body.decoded)
      else
        Ticket.create subject: message.subject, body: message.body.decoded, from: message.from.first
      end
    end
    

    【讨论】:

      【解决方案2】:

      Postmark Inbound 是一个不错的选择。设置如下:

      1. 注册 Postmark,他们会给您一封电子邮件,Postmark 会分配给您的帐户。
      2. 为您的域注册带有 Google Apps 品牌的 Gmail。设置从帐户转发到邮戳电子邮件地址。人们现在可以发送电子邮件至 reply@yourdamin.com,它会被转发到 Postmark。
      3. 创建回调 URL。当 Postmark 收到一封电子邮件时,它会将其打包并发布到您的回调中。然后,您可以通过 params 哈希访问电子邮件属性。

      要实现回复消息,只需在外发消息中添加一个回复字段,其中包含消息的唯一哈希,例如

      reply+uniquehash@yourdomain.com.
      

      这是一个合法的电子邮件地址,将被发送到 reply@yourdomain.com。然后,您可以解析出回调中的哈希值,并使用它来匹配原始消息的回复。

      简单:)

      【讨论】:

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