2012-02-01 1 views
2

Développer ruby ​​sur rails3 application où j'envoie un email à l'utilisateur et si l'utilisateur répond à ce courriel puis ce contenu de réponse, la date doit être mise à jour à la base de données. Pour cela, j'ai le modèle ProductComment. Quand admin envoie un commentaire à l'utilisateur, il sera stocké dans la base de données. Si l'utilisateur répond à cette question, la base de données doit être mise à jour en conséquence. J'essaie d'utiliser mailman. J'ai installé la gemme. Mais je ne comprends pas comment obtenir le commentaire id, que dois-je écrire dans l'adresse replyto, où écrire le code mailman et de quel mail je devrais lire.comment traiter les mails entrants en utilisant mailman et les mettre à jour dans la base de données

Am envoyer des messages électroniques comme ceci:

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

Je manipulation dans le contrôleur de produits comme celui-ci:

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

S'il vous plaît aidez-moi à sortir de ce problème

S'il vous plaît me dire comment utiliser gem mailman dans ruby ​​sur rails3 application

Répondre

5

il y a un récent pro-épisode sur la réception de courriels avec postier 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

Marcophilie entrant est un bon choix. Configuration comme suit:

  1. Inscrivez-vous pour le cachet postal, ils vous donneront un e-mail que Postmark attribuera à votre compte.
  2. Inscrivez-vous à Gmail pour votre domaine. Configurez la redirection d'un compte vers l'adresse e-mail Postmark. Les gens peuvent maintenant envoyer un email à [email protected], qui sera envoyé à Postmark.
  3. Créez une URL de rappel. Lorsque Postmark reçoit un e-mail, il l'empaquette et l'enregistre dans votre rappel. Vous pouvez ensuite accéder aux attributs d'email via le hash params.

Pour mettre en œuvre la réponse aux messages, ajoutez simplement une réponse à un champ à votre message sortant qui contient un hachage unique pour le message, par exemple.

[email protected] 

Ceci est une adresse e-mail légale, et sera envoyé à [email protected] Vous pouvez ensuite analyser le hachage dans votre rappel et l'utiliser pour faire correspondre la réponse au message d'origine.

Simple :)

Questions connexes