Tengo una aplicación de rieles que procesa los correos electrónicos entrantes a través de IMAP. Actualmente se utiliza un método que busca en las partes de un objeto TMail para un determinado content_type:Al procesar una respuesta por correo electrónico, ¿cómo puedo ignorar las especificaciones del cliente de correo electrónico y el historial?
def self.search_parts_for_content_type(parts, content_type = 'text/html')
parts.each do |part|
if part.content_type == content_type
return part.body
else
if part.multipart?
if body = self.search_parts_for_content_type(part.parts, content_type)
return body
end
end
end
end
return false
end
Estos mensajes son por lo general en respuesta a un correo electrónico HTML que envió a cabo en el primer lugar. (El correo electrónico saliente original nunca es el mismo.) El texto del cuerpo que muestra el método anterior contiene el historial completo del correo electrónico y me gustaría simplemente analizar el texto de respuesta.
Me pregunto si es razonable colocar un poco '--- por favor, responda por encima de esta línea ---' de texto en la parte superior del correo como he visto en una aplicación de 37 señales.
¿Hay alguna otra manera de ignorar las adiciones específicas del cliente al correo electrónico, aparte de escribir una multitud de expresiones regulares (que aún no he intentado) para cada cliente de correo? Todos parecen abordar su propio puntaje en la parte superior de todas las respuestas.
Gracias por su respuesta, he tenido un juego con algunas variaciones en los correos electrónicos entrantes, incluidos los correos electrónicos con archivos adjuntos. He encontrado la misma configuración que mencionaste. Como dices, parece que nada está garantizado. Me parece una tontería que la coincidencia de patrones como esta sea la única manera de continuar.Incluso con la respuesta --- aquí arriba --- usted todavía necesita manejar los detalles del cliente de correo electrónico, ya que naturalmente va más allá de la línea de todos modos :( – tsdbrown