Cómo recoger información de encabezado (por ejemplo, asunto) de un correo electrónico recibido a través de una publicación HTTP

Estoy utilizando CloudMailin en un intento de cargar fotos de perfil en el sitio web de un dispositivo móvil por correo electrónico. Usando su documentación tengo...

controlador_de_correos_entrantes.rb:

  def create
    ...
    user_id = params[:headers][:subject] # line 13
    ...
  end

El error que obtengo:

NoMethodError (undefined method `[]' for nil:NilClass):
  app/controllers/incoming_mails_controller.rb:13:in `create'

La parte relevante del registro:

Apple-Mail=_...\r\n", "x_references"=>"sample@example.com", "x_cc_header"=>"", "subject"=>"Smith, Joe"}

Busqué en la web una solución y no encontré una solución. Gracias por tu ayuda.


Actualizar:

Coloque lo siguiente en el controlador:

::Rails.logger.info "PARAMS INSPECT: " + params.inspect

Lo siguiente es solo una porción muy pequeña de lo que produjo:

PARAMS INSPECT: {"message"=>"Received: by ... :content-type:subject:date:message-id:to:mime-version:x-mailer\r\n...
Content-Type: multipart/alternative; boundary=\"Apple-Mail=_..."\r\n
Subject: Smith, John\r\n ...
"return_path"=>"yada@blah.com", 
"x_from_header"=>"[\"blay@yada.com\"]", ...
"subject"=>"Smith, John"

preguntado el 12 de junio de 12 a las 20:06

¿Podría vincular la página específica de sus documentos que utilizó? Si los datos que necesita están en el hash de parámetros (como parece esperar), comenzaría por generar params.inspect a su registro o algo así, solo para ver si puede averiguar dónde están los datos. -

@MrTheWalrus, actualizó el enlace a la página específica. Actualizaré con params.inspect tan pronto como obtenga resultados... gracias. -

1 Respuestas

Es difícil estar seguro de la estructura exacta del hash de parámetros y cualquier sub-hashes sin la impresión completa (presumiblemente larga) de los parámetros, pero parece que hay un parámetro para cada encabezado, incluido un parámetro 'asunto' (params[:subject], ¿probablemente?). ¿Es eso lo que necesitabas?

Respondido el 12 de junio de 12 a las 21:06

Por si le sirve a alguien más. El formato exacto de cada uno de los formatos de mensaje de CloudMailin se encuentra en docs.cloudmailin.com/http_post_formats. - Steve Smith

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.