特定のアクションが発生したときにメールを送信するレールアプリケーションを作成しています。ユーザーはこれらのメールに返信でき、システムは返信メールをユーザーに送信された元のメールと照合する必要があります。
これを行う最善の方法は、メッセージを送信するときにメッセージ ID ヘッダー フィールドを保存することのようですが、これは ActionMailer で可能ですか? 次に、返信から参照ヘッダーを取得し、メッセージを照合します。
これが不可能な場合、代替ソリューションはありますか?
特定のアクションが発生したときにメールを送信するレールアプリケーションを作成しています。ユーザーはこれらのメールに返信でき、システムは返信メールをユーザーに送信された元のメールと照合する必要があります。
これを行う最善の方法は、メッセージを送信するときにメッセージ ID ヘッダー フィールドを保存することのようですが、これは ActionMailer で可能ですか? 次に、返信から参照ヘッダーを取得し、メッセージを照合します。
これが不可能な場合、代替ソリューションはありますか?
Rails 3 では、これが可能です。
message = Mailer.welcome(@user).deliver
message.message_id #=> 4ccc56d19...
別の方法として、次のようにメールの「返信先」フィールドに追跡コードを追加することもできます。
たとえば、通知 ID が 123 の場合、ユーザーは notification+123@yourdomain.com に返信します。システムが電子メールを受信すると、123 を使用して元のメッセージを識別することができます。
actionmailer 内でメッセージ ID にアクセスできるかどうかはわかりませんが、独自のカスタム ヘッダーを追加して、ユーザーが返信するときにこれらを参照することは可能です。
次のように、メーラー モデル内でこれを行います。
@headers["VetId"] = order.vet_id
メーラークラスで Message-ID ヘッダーをそのように設定できます
class mailer < ActionMailer::Base
default "Message-ID" => lambda {"#{SecureRandom.uuid}@domain.com"}
....
end
http://tmail.rubyforge.org/をご覧ください。