2009-08-21 22 views
4

特定のアクションが発生したときに電子メールを送信するレールアプリケーションを作成しています。ユーザーはこれらの電子メールに返信し、返信メールとユーザーに送信された元の電子メールを照合する必要があります。ActionMailerが送信メッセージのメッセージIDを取得する

これを行う最善の方法は、メッセージを送信するときにメッセージIDヘッダーフィールドを保存することです。これはActionMailerで可能ですか?私は、返信から参照ヘッダーを取得し、メッセージに一致させることができます。

これが可能でない場合は、別の解決策がありますか?

答えて

1

actionmailer内でメッセージIDにアクセスすることが可能かどうかはわかりませんが、独自のカスタムヘッダーを追加して、ユーザーが返信する際にこれを参照することは可能です。次のように

あなたはメーラモデル内でこれを行う: - : 返信に:

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

別の代替では、このような電子メールのフィールド「に返信」 何かにトラッキングコードを追加することで通知+ $ { notifcation_id}@yourdomain.com

たとえば、通知IDが123の場合、ユーザーはnotification [email protected]に返信します。システムがメールを受信すると、元のメッセージを識別するために123を使用できます。

0

http://tmail.rubyforge.org/をご覧ください!

Railsの3、これが可能であると
+0

これはあまり役に立ちません。 – Greg

+1

申し訳ありませんが、私が言いたいのは、ActionMailerサブクラス内のTMail :: MailオブジェクトのメッセージIDにアクセスできるということです。 http://tmail.rubyforge.org/rdoc/classes/TMail/Mail.html#M000083 たとえば、 "mail = UserMailer.create_notification_mail"で新しいメールを作成することができます(UserMailerがActionMailerのサブクラス)、mail.message_idでメッセージIDにアクセスします。 しかし、反対側では、返信アドレスにトークンを追加するために上記の "ez"の方法が好きです。 もう少し手伝ってくれることを願っています。 – anka

9

:あなたが設定することができます

メッセージ= Mailer.welcome(@user).deliver
message.message_id#=> 4ccc56d19 ...

0

あなたのメーラークラスのメッセージIDヘッダーのように

class mailer < ActionMailer::Base 
    default "Message-ID" => lambda {"#{SecureRandom.uuid}@domain.com"} 
    .... 
end 
関連する問題