2009-08-21 3 views
4

Ich schreibe eine Rails-Anwendung, die E-Mails sendet, wenn bestimmte Aktionen auftreten, Benutzer können dann auf diese E-Mails antworten und das System muss die Antwort-E-Mail mit der ursprünglichen E-Mail an den Benutzer gesendet werden.ActionMailer get messageid für gesendete Nachrichten

Es scheint wie der beste Weg, dies zu tun, ist das Speichern der Nachrichten-ID-Header-Feld beim Senden von Nachrichten, ist dies in ActionMailer möglich? Ich kann dann die Referenzen Header aus Antworten abrufen und die Nachrichten übereinstimmen.

Wenn dies nicht möglich ist, gibt es alternative Lösungen?

Antwort

1

Ich bin mir nicht sicher, ob es innerhalb von actionmailer möglich ist, auf die Nachrichten-ID zuzugreifen. Es ist jedoch möglich, eigene benutzerdefinierte Header hinzuzufügen und diese dann zu referenzieren, wenn der Benutzer antwortet.

Sie tun dies im Mailer-Modell wie folgt: -

@headers["VetId"] = order.vet_id 
3

eine weitere Alternative ist es, einen Tracking-Code auf das Feld so etwas wie dieses ‚antworten‘ E-Mail hinzuzufügen: Antwort auf: Benachrichtigung + $ { notifcation_id}@yourdomain.com

Beispiel: Wenn die Benachrichtigungs-ID 123 lautet, antwortet der Benutzer auf die Nachricht "[email protected]". Wenn das System die E-Mail empfängt, kann mit 123 die ursprüngliche Nachricht identifiziert werden.

0

Schauen Sie auf http://tmail.rubyforge.org/!

+0

Das ist überhaupt nicht hilfreich. – Greg

+1

Sorry Greg, ich möchte erwähnen, dass Sie auf die Nachrichten-ID Ihres TMail :: Mail-Objekts innerhalb Ihrer ActionMailer-Unterklasse zugreifen können. Sie können die Referenz unter http://tmail.rubyforge.org/rdoc/classes/TMail/Mail.html#M000083 sehen. Zum Beispiel können Sie eine neue Mail mit "mail = UserMailer.create_notification_mail" erstellen (wenn UserMailer Ihre ist Unterklasse von ActionMailer) und greifen Sie dann mit mail.message_id auf die Nachrichten-ID zu. Aber auf der anderen Seite bevorzuge ich den oben beschriebenen Weg "ez", um ein Token zu Ihrer Antwortadresse hinzuzufügen. Hoffnung, die ein bisschen mehr half. – anka

9

Mit Rails 3, das ist möglich:

message = Mailer.welcome (@user) .deliver
message.message_id # => 4ccc56d19 ...

0

Sie können festlegen, der Nachrichten-ID-Header wie in Ihrer Mailerklasse

class mailer < ActionMailer::Base 
    default "Message-ID" => lambda {"#{SecureRandom.uuid}@domain.com"} 
    .... 
end 
Verwandte Themen