2011-08-27 8 views
6

Utilizando Mail gem (es decir, Rails + ActionMailer), ¿hay alguna forma clara de obtener el nombre para mostrar del destinatario?Joya de correo. Extraiga el nombre y la dirección de visualización del destinatario como valores separados

puedo obtener la dirección con:

mail.to.first 

Y puedo obtener el nombre de pantalla con formato + dirección con:

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

Pero, ¿cómo puedo obtener sólo la parte del nombre de la pantalla (es decir, antes < y >). Sé que alguien va a sugerir un Regex, pero eso no es lo que estoy buscando, ya que entonces tendría que analizar cualquier codificación, que es algo que la gema de Mail probablemente ya haga. Soy el autor de una biblioteca popular de Mailer en PHP y soy consciente de los peligros de suponer que el bit antes de < y > es legible en humanos, en los encabezados, cuando entran en juego los caracteres de 8 bits.

Puedo hacer esto:

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

Pero tiene que haber una mejor manera? :)

Respuesta

18

Lo descubrí, lo siento. Para cualquier otra persona que llega a este hilo en busca de la solución:

mail[:to].display_names.first 
+0

Su respuesta me ayudó a encontrar una manera de crear dirección de correo electrónico con el nombre de visualización que contienen corchetes angulares y cita – tig

+1

también: 'electrónico [: a] .addrs.first .display_name' (podría ser útil si quieres mantener la relación nombre-dirección). –

+1

Me gustaría mencionar que el mensaje [: to] no es en absoluto lo mismo que message.to - ¡eso es embarazoso! Me tomó 2 horas de excavar en el código fuente para averiguarlo. – Konstantin

Cuestiones relacionadas