2012-02-01 5 views
2

Я разрабатываю ruby ​​на приложении rails3, где я отправляю электронное письмо пользователю, и если пользователь отвечает на это письмо, то этот ответный контент, дата должна быть обновлена ​​до базы данных. Для этого у меня есть модель ProductComment. когда администратор отправляет комментарий пользователю, он будет сохранен в базе данных. если пользователь отвечает на это, тогда необходимо соответствующим образом обновить базу данных. Я пытаюсь использовать mailman. Я установил драгоценный камень. Но я не получаю, как получить идентификатор комментария, что я должен писать в ответ на адрес, где писать код mailman и из какой почты я должен читать.Как обрабатывать входящие письма с помощью mailman и обновлять их в базе данных

Посылаю электронной почты, как это:

mail(:to => @user.email, :subject => "Edit Your Product", :reply_to=>"[email protected]) 

Я его обработки в контроллере продукции, как это:

require 'mailman' 
Mailman::Application.run do 
to '[email protected]' do 
ProductComment.create(message) 
end 
end 

Пожалуйста, помогите мне выйти из этой проблемы

Скажите, пожалуйста, как использовать mailman жемчужина в рубине на rails3 приложение

ответ

5

есть последнее про эпизод на получение сообщений электронной почты с почтальоном на 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 
0

штемпель Входящее является хорошим выбором. Настройка как таковая:

  1. Подпишитесь на Postmark, они предоставят вам электронное письмо, которое Postmark будет присвоить вашей учетной записи.
  2. Подпишитесь на Gmail для Google Apps для своего домена. Настройте отправку с учетной записи на адрес электронной почты Postmark. Теперь люди могут отправлять по электронной почте [email protected], и он будет отправлен в Postmark.
  3. Создайте URL-адрес обратного вызова. Когда Postmark получит электронное письмо, он упакует его и отправит на ваш обратный вызов. Затем вы можете получить доступ к атрибутам электронной почты с помощью хэша params.

Чтобы реализовать ответ на сообщения, просто добавьте ответ в поле к исходящему сообщению, которое содержит уникальный хэш для сообщения, например.

[email protected] 

Это юридический адрес электронной почты и будет отправлен на адрес [email protected] Затем вы можете проанализировать хэш в своем обратном вызове и использовать его для соответствия ответа на исходное сообщение.

Простой :)

 Смежные вопросы

  • Нет связанных вопросов^_^