如何在Rails 2.3.5中将prawnto呈现的.pdf附加到电子邮件中?

Tim*_* T. 11 pdf email ruby-on-rails attachment

我的应用程序通过将其传递给URL来呈现.pdf文件(例如,domain.com /letter/2.pdf)

它不会被保存在任何地方.

如何将实际pdf作为出站电子邮件中的附件.

这是我的邮件:

  def campaign_email(contact,email)
    subject    email.subject
    recipients contact.email
    from       'Me <me@me.com>'
    sent_on    Date.today

    attachment = File.read("http://localhost:3000/contact_letters/#{attachment.id}.pdf")

   attachment "application/pdf" do |a|
    a.body = attachment
    a.filename = "Othersheet.pdf" 
   end
 end
Run Code Online (Sandbox Code Playgroud)

这是创建/呈现PDF的控制器:

def create
    @contact_letter = ContactLetter.new(params[:contact_letter])

    @contact = Contact.find_by_id(@contact_letter.contact_id)
    @letter = Letter.find_by_id(@contact_letter.letter_id)

    if @contact_letter.save
      flash[:notice] = "Successfully created contact letter."

      #redirect_to contact_path(@contact_letter.contact_id)
      redirect_to contact_letter_path(@contact_letter, :format => 'pdf')
    else
      render :action => 'new'
    end
  end
Run Code Online (Sandbox Code Playgroud)

注意:我硬编码localhost:3000 /如何用变量替换它,以便在dev上它是localhost:3000并且在生产时它是正确的域?有没有办法在此包含路由?)

错误:我得到了

参数无效 - http:// localhost:3000/contact_letters/9.pdf

tha*_*way 5

这是rails 2的一个例子

class ApplicationMailer < ActionMailer::Base
# attachments
def signup_notification(recipient, letter)
  recipients      recipient.email_address_with_name
  subject         "New account information"
  from            "system@example.com"

  attachment :content_type => "image/jpeg",
    :body => File.read("an-image.jpg")

  attachment "application/pdf" do |a|
    a.body = letter
  end
end
end
Run Code Online (Sandbox Code Playgroud)

在您的视图中或您调用方法的任何地方:

ApplicationMailer.deliver_signup_notification(letter)
Run Code Online (Sandbox Code Playgroud)


Tim*_* T. 0

我通过将 pdf 对象直接传递到 Campaign_email 方法然后分配附件来使其工作。