没有Rails的ActionMailer 3

Spe*_*r R 28 ruby actionmailer ruby-on-rails-3

我正在编写一个小型Ruby程序,它将从数据库中提取记录并每天发送一封HTML电子邮件.我正在尝试使用ActionMailer 3.0.3,但我遇到了问题.到目前为止,我在Rails之外使用ActionMailer所做的所有搜索都适用于版本3之前的版本.有人能指出我在哪里找到如何执行此操作的资源的正确方向吗?这是我到目前为止在我的邮件文件中的位置:

# lib/bug_mailer.rb
require 'action_mailer'

ActionMailer::Base.delivery_method = :file

class BugMailer < ActionMailer::Base
  def daily_email
    mail(
            :to      => "example@mail.com",
            :from    => "example@mail.com",
            :subject => "testing mail"
    )
  end
end

BugMailer.daily_email.deliver
Run Code Online (Sandbox Code Playgroud)

我肯定会被困在哪里发表意见.我告诉ActionMailer模板所在的每一次尝试都失败了.

我想我也应该问一下是否有不同的方法可以完成这个程序.基本上,我现在正在从头开始做所有事情.显然是什么让Rails很棒是它的惯例,所以试图自己使用部分Rails浪费时间?有没有办法在不创建完整的Rails应用程序的情况下获得类似Rails的环境?

Aug*_*sto 47

经过一些严肃的调试,我找到了如何配置它.

file mailer.rb

require 'action_mailer'

ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
   :address   => "smtp.gmail.com",
   :port      => 587,
   :domain    => "domain.com.ar",
   :authentication => :plain,
   :user_name      => "test@domain.com.ar",
   :password       => "passw0rd",
   :enable_starttls_auto => true
  }
ActionMailer::Base.view_paths= File.dirname(__FILE__)

class Mailer < ActionMailer::Base

  def daily_email
    @var = "var"

    mail(   :to      => "myemail@gmail.com",
            :from    => "test@domain.com.ar",
            :subject => "testing mail") do |format|
                format.text
                format.html
    end
  end
end

email = Mailer.daily_email
puts email
email.deliver
Run Code Online (Sandbox Code Playgroud)

file mailer/daily_email.html.erb

<p>this is an html email</p>
<p> and this is a variable <%= @var %> </p>
Run Code Online (Sandbox Code Playgroud)

file mailer/daily_email.text.erb

this is a text email

and this is a variable <%= @var %>
Run Code Online (Sandbox Code Playgroud)

好问题!它帮助我更多地了解Rails 3的工作方式:)

  • yipee!我找到了解决方案!:D ......我对ruby和rails很新,所以这是一个非常好的挑战:) (3认同)