2013-01-19 2 views
1

전자 메일을 데이터베이스에 저장하여 나중에 레이크 작업을 통해 보내려고합니다. 그것은 레일 2.3.8 (TMail)에서 꽤 쉬웠지만 레일 3.2에서는 문제가 있습니다.레일 3.2 메일 직렬화 및 역 직렬화

메일 개체 (메일)를 얻으면 mail.encoded를 호출하여 이메일을 직렬화합니다. 나는 이것을 데이터베이스에 저장한다.

내 레이크 작업이 인코딩 된 메시지를로드하지만 메일 개체를 다시 만들고 배달 (비 직렬화)을 호출하는 방법을 찾을 수 없습니다.

Mail.new (mail.encoded)는 정상적으로 작동하지만 Mail.new가 기본 ActionMailer SMTP 설정을 가져 오지 않아 전송이 실패한 것처럼 보입니다.

다른 사람이 이와 같은 작업을 수행하고 있습니까?

감사합니다.

+0

찾았습니다. http://stackoverflow.com/questions/13264424/how-to-serialize-and-deserial-mailers. 그러나 그들은 SMTP 설정을 선택하지 않는 Mail.new 문제가 여전히 있습니다. – arons

답변

2

좋아,이 작업을했습니다.

전자 메일을 serialize하려면 다음을 수행하십시오.

email = mail(:to => '[email protected]', ....) 
string = mail.encoded 

# later one 

mail.new(email.string) 
Mail.deliver(mail) 

이것은 HTML 유효성 검사를 건너 뛴 것으로 보입니다.

메일 보내기 설정 (SMTP 등)을 설정할 수 없지만 기본적으로 : sendmail이 웹 서버에서 작동하고 있다고 생각합니다.

+0

smtp 설정을 작동 시키려면 메일을 보내기 전에'ActionMailer :: Base.wrap_delivery_behavior (mail)'을 추가하십시오 – snovity