Edited at

Ruby 1.9.3以降でパスワード付きZipをメールで送りたい

More than 3 years have passed since last update.


Ruby 1.9.3以降でパスワード付きZipをメールで送りたい

今回やりたかったのはパスワード付きだったのに、開発が継続されているGemではパスワード付きができなかった。なので、無理矢理zipコマンドを使ってパスワード付きのファイルを作ってやることに。

これにはGemはとくに必要なし。


Mailer

class SampleMailer < ActionMailer::Base

default from: "test@fusic.co.jp"

def sample
password = "password" #パスワードを入力

if @scores.count>0
dir = "#{Rails.root}/tmp/send_files/"
file_name = "sample-#{Time.now}"

File.open(dir+file_name+".txt", 'w') do |f|
f.print("いちぎょうめ\n")
f.print("にぎょうめ\n")
end

# zipで固めて
system "zip -P #{password} '#{dir}#{file_name}.zip' '#{dir}#{file_name}.txt' -j"

# 添付する
attachments[file_name+".zip"] = File.read("#{dir}#{file_name}.zip")

# 使った後はゴミになるので削除
File.delete(dir+file_name+".txt")
File.delete(dir+file_name+".zip")
end

mail to: emails # メール送信
end
end


注意点

サーバーにデフォルトではzipは入ってないと思うので

sudo yum install -y zip

してやりましょう。