그래서 .zip 파일이 포함 된 이메일을 보내려고합니다. .zip 파일은 다른 서버의 다른 URL에 있습니다. 파일을 가져 와서 첨부하고 보낼 수 있습니다. 그러나 내가 전자 메일에서 첨부 파일을 얻을 때. * .zip.zip 이름에서 .zip을 제거하려고 시도했지만 아카이브 관리자가 열 수 없습니다..zip 파일을 레일즈의 이메일 첨부 파일로 보내기
아이디어가 있으십니까?
코드는 다음과 같습니다.
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"
}
는 [이 해결]
용액은 비교적 간단하다.
attachments['files.zip'] = open('http://somedomain.com/path/to/file.zip').read
첨부 파일은 파일의 내용을 받아야합니다. .read는 파일의 내용을 반환합니다. 내 문제는 내가 새 파일의 내용에 전체 zip 파일을 배치했다는 것이 었습니다. 위의 솔루션은 zip의 내용 만 새로운 파일에 저장합니다.
언젠가 누군가에게 도움이되기를 바랍니다. 모든 제안을 주셔서 감사합니다.
첨부 파일을 넣으면 어떻게됩니까? [ "files"] = File.read (tempfile.path) – Abram
확장명이없는 첨부 파일로 파일을받습니다. 속성을 검사 할 때 크기는 0 바이트이고 유형은 텍스트 문서입니다. 어떤 사람들은 http 응답을 zip 아카이브가 아닌 파일에 저장하고 있다고 생각합니다. – robinjohnobrien
http://rubyzip.sourceforge.net/classes/Zip/ZipFile.html – Abram