2009-08-21 2 views
4

특정 작업이 발생할 때 전자 메일을 보내는 레일스 응용 프로그램을 작성 중이므로 사용자는이 전자 메일에 회신 할 수 있으며 시스템은 사용자에게 보낸 원래 전자 메일과 회신 전자 메일을 일치시켜야합니다.ActionMailer가 보낸 메시지에 대해 messageid를 가져옵니다.

메시지를 보낼 때 메시지 ID 헤더 필드를 저장하는 것이 가장 좋은 방법 인 것 같습니다. 이것이 ActionMailer에서 가능한가요? 그런 다음 회신에서 참조 헤더를 검색하고 메시지를 일치시킬 수 있습니다.

이것이 가능하지 않은 경우 다른 해결책이 있습니까?

답변

1

actionmailer 내에서 메시지 ID에 액세스 할 수 있는지 확실하지 않지만 고유 한 맞춤 헤더를 추가 한 다음 사용자가 답장 할 때 참조 할 수 있습니다. 다음과 같이

당신은 메일러 모델 내에서이 작업을 수행 : - : 회신 :

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

다른 대안은 다음과 같이 이메일의 현장 '회신' 뭔가에 추적 코드를 추가하는 것입니다 알림 + $ { notifcation_id}@yourdomain.com

예를 들어 알림 ID가 123이면 사용자가 notification [email protected]에 회신하고 시스템에서 이메일을 받으면 123을 사용하여 원본 메시지를 식별 할 수 있습니다.

0
+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하는)
가 message.message_id # => ... 4ccc56d19

0

설정할 수 = .deliver 메일러 클래스의 Message-ID 헤더가 비슷합니다.

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