Rails 2 - 通过电子邮件发送pdf

时间:2011-12-21 07:46:03

标签: ruby-on-rails

我使用的是ruby 1.8.7,rails 2.3.4,rubygems 1.3.6,windows 7 home basic。

目标:将html页面转换为pdf并通过电子邮件发送。 (如在线收据)

以下是我使用的:prawn(for pdf)emailer(电子邮件)

问题:如何发送电子邮件到真实的电子邮件地址?我从教程中得到的就是发送一封"电子邮件"可以在命令提示符中看到。这就是全部。另一个问题是如何动态生成pdf,这意味着应该没有生成文件并将其附加到电子邮件中?这真的很难,我已经在这几周工作了。感谢。

1 个答案:

答案 0 :(得分:1)

你的问题的确切答案取决于你如何生成你的pdf,但这是一个应该有效的例子:

1)在您的控制器文件中(作为操作的一部分)

pdf_doc = Prawn::Document.new()
pdf.text "Hello, world" # etc, etc
data_string = pdf_doc.render
user = 'me@example.com'

Emailer.deliver_email_with_attachment(user,data_string)

2)在您的邮件文件中(例如app / models / emailer.rb)

class Emailer < ActionMailer::Base

  def email_with_attachment(user, data)
    # setup your email as normal using @from, @subject, etc
    @from = user

    # now attach the pdf
    attachment :content_type => "application/pdf", :body => data
  end

end

有关ActionMailer中附件的详细信息,请参阅The rails docs

编辑:您还应确保已编辑配置文件,以确保您的rails应用可以发送电子邮件。当您使用Windows时,您需要配置SMTP发送:

<强>配置/环境/ development.rb

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :address              => "my.smtp-server.com",
  :port                 => 25,
  :domain               => 'iwantgreatcare.org',
  :user_name            => 'username',
  :password             => 'password',
  :authentication       => 'plain',
}    

有关配置smtp设置的详细信息,请参阅Rails ActionMailer guide