クライアントのファイルの内容を読み込み、base64でエンコードし、JSON経由でRailsのバックエンドに送り、base64でデコードしてデータを格納しますデータベース。私はその後、添付ファイルとしてデータを含むメールをRailsから送信しようとします。ここでデータベースからバイナリデータを読み込み、Ruby on Railsで添付ファイルとして使用
は、バイナリデータの私の列定義である:ここで
t.column :binarydata, :binary, :limit => 10.megabytes, :null => false
は私のメールテンプレートです:私はデータベースから読み込まれ、電子メールを送信するのはここ
class MYMailer < ActionMailer::Base
def mail(from, to, cc, bcc, subject, message, files=[], sent_at = Time.now)
@subject = subject
@recipients = to
@from = from
@cc = cc
@bcc = bcc
@sent_on = sent_at
@body["message"] = message
@headers = {}
# attache files
files.each do |file|
attachment file.mimetype do |a|
a.body = file.binarydata
a.filename = file.filename
end
end
end
end
は次のとおりです。
attachements = AttachementItem.find(:all)
MYMailer.deliver_mail("[email protected]", "[email protected]", nil, nil, "Attachement test", "This is just a test", attachements)
次のコードは、JSONを解析してデータベースに格納します。
attachement_json = params[:attachement]
attachement_json = attachement_json.gsub(/\n/, "\\n")
attachement = AttachementItem.new.from_json(attachement_json)
b64data = Base64.decode64(attachement.binarydata)
attachement.binarydata = b64data
attachement.save
メールで受け取った添付ファイルはごみです。エラーがクライアント側にあるかどうかわかりませんが、これも調査していますが、Railsコードにエラーがあるかどうかを確認できますか?
ありがとうございました
ファイルを添付するときに 'file.mimetype'とは何ですか?アップロードしたファイルのMIMEタイプを正しく設定していますか?ファイルはデータベースで正しく見えますか?ファイルが電子メールクライアントのガベージであるとはどのように判断していますか? – sarnold