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并且在生产时它是正确的域?有没有办法在此包含路由?)
错误:我得到了
这是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)
| 归档时间: |
|
| 查看次数: |
1134 次 |
| 最近记录: |