ver puedo por mail los enviar drop documento desde cómo correo como archivos archivo adjuntos adjunto adjuntar email csv mime-types attachment sendgrid

email - puedo - ¿Cómo enviar un archivo adjunto csv con líneas de más de 990 caracteres?



no puedo ver archivos adjuntos en mi iphone (2)

¿Podrían tener nuevas líneas en sus datos que podrían causar esto? Verifique y vea si

csv_for_orders(orders).lines.count == orders.count

Si es así, un arreglo rápido / de hackeo podría estar cambiando donde usted llama values_for_line_item(item) a values_for_line_item(item).map{|c| c.gsub(/(/r|/n)/, '''')} values_for_line_item(item).map{|c| c.gsub(/(/r|/n)/, '''')} (lo mismo para las otras llamadas a line_item).

Bien. Pensé que este problema tenía algo que ver con mi aplicación Rails, pero parece tener que ver con el funcionamiento más profundo de los archivos adjuntos de correo electrónico.

Tengo que enviar un archivo csv desde mi aplicación de rieles a un almacén que cumple los pedidos en mi tienda. El almacén tiene un formato para el archivo CSV e, irónicamente, la línea del encabezado del archivo CSV es muy larga (más de 1000 caracteres).

Estaba recibiendo un salto de línea en la línea de encabezado del archivo csv cuando recibí los correos electrónicos de prueba y no pude entender qué lo puso allí. Sin embargo, algunos google finalmente han demostrado el motivo: los archivos adjuntos tienen un límite de caracteres de línea de 1000. ¿Por qué? No lo sé. Parece ridículo, pero aún tengo que enviar este archivo csv de alguna manera.

Intenté establecer manualmente el tipo MIME del archivo adjunto a text / csv, pero eso no fue de ayuda. ¿Alguien sabe cómo resolver este problema?

Algunos resultados relevantes de google: http://www.google.com/search?client=safari&rls=en&q=csv+wrapped+990&ie=UTF-8&oe=UTF-8

actualizar

Intenté codificar el archivo adjunto en base64 así:

attachments[''205.csv''] = {:data=> ActiveSupport::Base64.encode64(@string), :encoding => ''base64'', :mime_type => ''text/csv''}

Eso no parece haber hecho la diferencia. Recibo el correo electrónico con una cuenta me.com a través de Sparrow para Mac. Trataré de usar la interfaz web de gmail.


Esto parece ser porque el servidor de correo SendGrid está modificando el contenido del archivo adjunto. Si envía un archivo adjunto con un tipo de mime de almacenamiento de texto sin formato (por ejemplo, text/csv ), ajustará el contenido cada 990 caracteres, como observó. Creo que esto está relacionado con RFC 2045/821 :

  1. Campo de encabezado Content-Transfer-Encoding

    Muchos tipos de medios que podrían ser transportados útilmente por correo electrónico están representados, en su formato "natural", como caracteres de 8 bits o binarios.
    datos. Tales datos no se pueden transmitir a través de algunos protocolos de transferencia.
    Por ejemplo, RFC 821 (SMTP) restringe los mensajes de correo electrónico a US-ASCII de 7 bits
    datos con líneas de un máximo de 1000 caracteres, incluido cualquier separador de líneas CRLF posterior.

    Por lo tanto, es necesario definir un mecanismo estándar para
    codificando dichos datos en un formato de línea corta de 7 bits. Etiquetado apropiado
    de material no codificado en formatos menos restrictivos para uso directo sobre transportes menos restrictivos también es deseable. Este documento
    especifica que tales codificaciones serán indicadas por un nuevo "Contenido-
    Campo de encabezado Transfer-Encoding ". Este campo no ha sido definido por
    cualquier estándar anterior.

Si envía el archivo adjunto utilizando la codificación base64 en lugar del valor predeterminado de 7 bits, el archivo adjunto permanece sin cambios (sin saltos de línea adicionales):

attachments[''file.csv'']= { :data=> ActiveSupport::Base64.encode64(@string), :encoding => ''base64'' }