Скрепка + ActionMailer - Добавление вложения? - PullRequest
10 голосов
/ 05 декабря 2010

У меня есть файл paperclip'd, который я хочу добавить в качестве вложения к моей электронной почте ....

класс UserMailer

  attachments ??? How to add a paperclip file?

  mail( :to => "#{record.email}", 
        :subject => "XXXXXXXX"
        )
end

Похоже, что по этой теме нет ничего через гугл, если у вас есть идеи, я хотел бы услышать это :)

Спасибо

UPDATE

  @comment.attachments.each do |a|
    tempfile = File.new("#{Rails.root.to_s}/tmp/#{a.attachment_file_name}", "w")
    tempfile << open(a.authenticated_url())
    tempfile.puts
    attachments[a.attachment_file_name] = File.read("#{Rails.root.to_s}/tmp/#{a.attachment_file_name}")
    # Delete it tempfile
    #File.delete("#{Rails.root.to_s}/tmp/#{a.filename}")
  end

Ответы [ 2 ]

9 голосов
/ 24 июня 2013

На него уже ответили, но я просто хочу поделиться немного другим способом сделать это:

Вот мой модельный отчет. Я использую Скрепку.

class Report < ActiveRecord::Base
  has_attached_file :pdf_file
  ...
end

А вот и мой почтовик ReportMailer

class ReportMailer < ActionMailer::Base
  def monthly_report_email(emails, report)
    attachments[report.pdf_file_file_name] = File.read(report.pdf_file.path)
    mail(:to => emails, :subject => 'monthly report')
  end
end
4 голосов
/ 05 декабря 2010

Из направляющих Ruby on Rails (доступно только через Bing ):

http://guides.rubyonrails.org/action_mailer_basics.html#sending-emails-with-attachments

Осталось только скачать вложение (если в S3) к файлу объекта или доступа к нему, он хранится локально.Попробуйте использовать open-uri .

...