2011-08-27 13 views
6

Posta gemini kullanma (örn. Rails + ActionMailer), alıcının görünen adını almanın temiz bir yolu var mı?Mail gem. Alıcının görünen adını ve adresini ayrı değerler olarak ayıkla

Birlikte adresi alabilirsiniz:

mail.to.first 

Ve biçimlendirilmiş görünen adı + adresi alabilirsiniz:

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

Ama nasıl sadece görüntü adı kısmını alabilirsiniz (yani önce < ve >). Birisinin bir Regex'i önereceğini biliyorum, ama aradığım şey bu değil, çünkü o zaman muhtemelen bir Mail geminin zaten yaptığı bir şey olan herhangi bir kodlamayı ayrıştırmak zorunda kaldım. Ben PHP'de popüler bir Mailer kitaplığının yazarıyım ve < ve >'dan önceki bitlerin varsayım tuzaklarının farkındayım, 8-bit karakterleri devreye girdiğinde başlıklar içinde insan tarafından okunabilir.

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

Ama daha iyi bir yolu olmalı:

bunu yapabilirim?

cevap

18

Figür çıkmış, üzgünüm. çözüm arayan Konuyu vurur başkası için:

mail[:to].display_names.first 
+0

Cevabınız beni görüntüleme adı içeren köşeli parantez içeren e-posta adresi oluşturmak için bir yol bulmak yardımcı oldu ve ayrıca – tig

+1

tırnak: 'posta [: to] .addrs.first .display_name' (isim-adres ilişkisini korumak istiyorsanız kullanışlı olabilir). –

+1

[: to] mesajının mesajla aynı şeyde olmadığını söylemekten de bahsetmek istiyorum - bu embarassing !!! Bulmak için kaynak kodda 2 saat kazmayı öğrendim. – Konstantin

İlgili konular