2011-08-27 3 views
6

메일 보석 (예 : Rails + ActionMailer)을 사용하면받는 사람의 표시 이름을 가져올 수있는 깨끗한 방법이 있습니까?메일 보석. 받는 사람 표시 이름과 주소를 별도의 값으로 추출하십시오.

내가 가진 주소를 얻을 수 있습니다 :

mail.to.first 

를 내가 가진 형식의 표시 이름 + 주소를 얻을 수 있습니다 :

mail.header_fields.select{ |f| f.name == "To" }.first.to_s 

을하지만 어떻게 난 그냥 표시 이름 부분을 얻을 수 있습니다 (즉, 전 <>). 나는 누군가가 Regex를 제안 할 것이라는 것을 알고있다. 그러나 나는 그것이 무엇인지를 파싱해야하기 때문에 내가 찾고있는 것이 아니다. 그것은 메일 젬이 아마도 이미하고있는 어떤 인코딩을 파싱해야하기 때문이다. 필자는 PHP에서 인기있는 메일러 라이브러리의 저자이며, 8 비트 문자가 재생 될 때 머리글에서 <>이 사람이 읽을 수있는 비트로 가정한다는 함정을 인식하고 있습니다.

mail.header_fields.select{ |f| f.name == "To" }.first.parse.individual_recipients.first.display_name.text_value 

을하지만 더 나은 방법이 있어야합니다 :

나는이 작업을 수행 할 수 있습니까? :)

답변

18

실례합니다. 솔루션을 찾고이 스레드를 명중 다른 사람을 위해 :

mail[:to].display_names.first 
+0

당신의 대답은 나를 표시 이름이 포함 꺾쇠 괄호와 이메일 주소를 만들 수있는 방법을 찾아야 도움도 – tig

+1

을 인용 : '메일 [을 님] .addrs.first .display_name' (이름 - 주소 관계를 유지하려는 경우 편리 할 수 ​​있습니다). –

+1

나는 메시지 [: to]가 메시지와 같은 것이 아니라는 것을 언급하고자한다. 그것은 당황 스럽다! 찾기 위해 2 시간 동안 소스 코드를 파고 들었다. – Konstantin

관련 문제