Чтение двоичных данных из базы данных и их использование в качестве вложений в почте с помощью Ruby on Rails - PullRequest
0 голосов
/ 30 января 2011

Я читаю содержимое файла на моем клиенте, кодирую его с помощью base64, отправляю его через JSON на мой сервер Rails, декодирую с помощью base64 и сохраняю данные в базе данных. Затем я пытаюсь отправить электронное письмо от 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("foo@home.com", "bar@home.com", 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?

Спасибо

1 Ответ

0 голосов
/ 31 января 2011

Ну, мой код Rails работает! Я нашел свои ошибки (там, где их больше одного), и они были в моем клиентском коде. Извините за вопрос:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...