Rails 3.0.7 проблема вложения ActionMailer - PullRequest
0 голосов
/ 24 мая 2011

Я пытаюсь прикрепить файл к исходящему письму, но размер вложения составляет 1 байт.Не имеет значения, какое вложение я пересылаю, оно всегда заканчивается размером в 1 байт (повреждено).Все остальное выглядит хорошо для меня.

Информация электронной почты извлекается из учетной записи IMAP и сохраняется в базе данных для просмотра.Вложения хранятся в файловой системе, а имя файла хранится в виде связанной записи для электронной почты.

В представлении есть возможность переслать письмо другому получателю.Это работало в Rails 2.3.8, но для Rails 3 мне пришлось изменить часть метода вложения, чтобы теперь это выглядело как ...

def forward_email(email_id, from_address, to_address)
    @email = Email.find(email_id)
    @recipients = to_address
    @from = from_address
    @subject = @email.subject
    @sent_on = Time.now
    @body = @email.body + "\n\n"

    @email.attachments.each do |file|
      if File.exist?(file.full_path)
        attachment :filename => file.file_name, :body => File.read(file.full_path)
      else
        @body += "ATTACHMENT NOT FOUND: #{file.file_name}\n\n"
      end
    end
end

Я также попробовал это с ...

attachments[file.file_name] = File.read(file.full_path)

и добавление: mime_type и: content_type безрезультатно.

Любая помощь будет признательна.

Спасибо!

Ответы [ 3 ]

1 голос
/ 16 октября 2012

Это то, что я пытался и работал для меня

 attachments.each do |file|
      attachment :content_type => MIME::Types.type_for(file.path).first.content_type, :body => File.read(file.path) 
 end
0 голосов
/ 27 мая 2011

Ну, кто-то из команды рельсов ответил на мой вопрос.Проблема заключается в добавлении содержимого тела (@body), кроме вложения внутри метода.Если вы собираетесь прикреплять файлы, вы должны использовать шаблон представления.

0 голосов
/ 24 мая 2011

Является ли файл читаемым? Можете ли вы отладить проблему, разместив что-то вроде этого?

logger.debug "File: #{file.full_path.inspect} : #{File.read(file.full_path).inspect[0..100]}"

Есть ли что-нибудь в вашем файле development.log?

...