2

ruby on rails3アプリケーションを開発しています。このアプリケーションでは、ユーザーにメールを送信しています。ユーザーがそのメールに返信した場合は、その返信コンテンツの日付をデータベースに更新する必要があります。このために私はProductCommentモデルを持っています。管理者がユーザーにコメントを送信すると、データベースに保存されます。ユーザーがそれに返信した場合は、それに応じてデータベースを更新する必要があります。郵便配達員を使おうとしています。宝石をインストールしました。しかし、コメントIDを取得する方法、replytoアドレスに何を書き込む必要があるか、mailmanコードをどこに書き込むか、どのメールから読み取る必要があるかがわかりません。

このようなメールを送信しています:

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

この問題から抜け出すのを手伝ってください

Rails3アプリケーションのrubyでmailmangemを使用する方法を教えてください

4

2 に答える 2

5

railscastsでmailmanとの電子メールの受信に関する最近のプロエピソードがあります:http://railscasts.com/episodes/313-receiveing-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
于 2012-02-15T19:00:57.317 に答える
0

消印インバウンドは良い選択です。そのように設定します。

  1. 消印にサインアップすると、消印があなたのアカウントに割り当てるメールが届きます。
  2. ドメインのGoogleAppsブランドのGmailにサインアップします。アカウントから消印のメールアドレスへの転送を設定します。これで、reply @ yourdamin.comに電子メールを送信でき、消印に転送されます。
  3. コールバックURLを作成します。Postmarkが電子メールを受信すると、それをパッケージ化してコールバックに投稿します。その後、paramsハッシュを介して電子メール属性にアクセスできます。

メッセージへの返信を実装するには、メッセージの一意のハッシュを含む送信メッセージに返信先フィールドを追加するだけです。

reply+uniquehash@yourdomain.com.

これは有効なメールアドレスであり、reply@yourdomain.comに送信されます。次に、コールバックのハッシュを解析し、それを使用して元のメッセージへの応答を照合できます。

単純 :)

于 2012-07-12T12:13:41.410 に答える