2012-10-12 5 views
2

J'essaie donc d'envoyer un e-mail contenant un fichier .zip. Le fichier .zip est situé à une autre URL sur un autre serveur. Je suis capable de récupérer le fichier, le joindre et l'envoyer. Cependant, quand j'obtiens la pièce jointe de l'email. Il ne s'ouvrira pas comme il dit ne peut pas ouvrir * .zip.zip J'ai essayé de supprimer le .zip dans le nom, mais le gestionnaire d'archives ne peut pas non plus l'ouvrir.Envoyer un fichier .zip en pièce jointe dans Rails

Des idées?

Le code est ci-dessous.

http = Net::HTTP.new('www.somedomaim.org') 
    http.start() { |http| 
    req = Net::HTTP::Get.new("/path/to/file.zip") 
    response = http.request(req) 
    tempfile = Tempfile.new('files') 
    File.open(tempfile.path, 'w') do |f| 
     f.write response.body 
    end 
    attachments["files.zip"] = File.read(tempfile.path) 
    mail to: [email protected], subject: "Sending zip file" 
    } 

[RESOLU]

La solution est assez simple.

attachments['files.zip'] = open('http://somedomain.com/path/to/file.zip').read 

Les pièces jointes doivent recevoir le contenu du fichier. .read renvoie le contenu du fichier. Mon problème était que je plaçais le fichier zip entier dans le contenu d'un nouveau fichier. La solution ci-dessus placera juste le contenu du zip dans un nouveau fichier.

Espérons que cela aide quelqu'un un jour. Merci pour toutes les suggestions.

+0

Qu'est-ce qui se passe si vous mettez des pièces jointes [ « files »] = File.read (tempfile.path) – Abram

+0

je reçois un fichier en pièce jointe sans extension. Lors de la vérification des propriétés, il est de taille 0 octets et le type est un document texte. Certains comment je soupçonne que je sauve la réponse http à un fichier (qui n'est rien) pas l'archive zip. – robinjohnobrien

+0

http://rubyzip.sourceforge.net/classes/Zip/ZipFile.html – Abram

Répondre

1

La solution est plutôt simple.

attachments['files.zip'] = open('http://somedomain.com/path/to/file.zip').read 

Les pièces jointes doivent recevoir le contenu du fichier. .read renvoie le contenu du fichier. Mon problème était que je plaçais le fichier zip entier dans le contenu d'un nouveau fichier. La solution ci-dessus placera juste le contenu du zip dans un nouveau fichier.

Questions connexes