0

这是一个新手问题,所以请原谅,我一直在使用 rails,但这是我第一次尝试从不包含 rails 的 heroku 应用程序中要求 gems - 只是一个普通的 Ruby 应用程序。好的,我有一个 app.rb 文件,如下所示:

require "sinatra"
require 'koala'
require 'action_mailer'
ActionMailer::Base.raise_delivery_errors = true

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
   :address   => "smtp.sendgrid.net",
   :port      => 587,
   :domain    => "MYDOMAIN",
   :authentication => :plain,
   :user_name      => "USER_NAME",
   :password       => "PASSWORD",
   :enable_starttls_auto => true
  }
ActionMailer::Base.view_paths= File.dirname(__FILE__)

class TestMailer < ActionMailer::Base

  default :from => "MY_EMAIL"

  def welcome_email
    mail(:to => "MY_EMAIL", :subject => "Test mail", :body => "Test mail body")
  end
end

我想做的是跑步

TestMailer::deliver_test_email

在控制台中获取详细信息或运行

TestMailer::deliver_test_email.deliver

发送测试电子邮件

但我得到的是:

NameError: uninitialized constant Object::TestMailer

我在 Gemfile 中包含了 actionmailer,它也在 Gemfile.lock 中

我敢肯定,对于经验丰富的 Ruby 开发人员来说,这是直截了当的事情,但我正在苦苦挣扎,谁能帮助我?

谢谢

4

1 回答 1

0

经过几个小时的测试和研究,我最终改用了 Mail,这是我的最终代码,运行时运行良好,我希望它可以帮助任何遇到与我相同问题的人 :)

require 'mail'

Mail.defaults do

  delivery_method :smtp, { :address   => "smtp.sendgrid.net",

                           :port      => 587,
                           :domain    => "MY_DOMAIN",
                           :user_name => "USER_NAME",
                           :password  => "PASSWORD",
                           :authentication => 'plain',
                           :enable_starttls_auto => true }
end

mail = Mail.deliver do
  to 'EMAIL'
  from 'Your Name <NAME@MY_DOMAIN>'
  subject 'This is the subject of your email'
  text_part do
    body 'hello world in text'
  end
  html_part do
    content_type 'text/html; charset=UTF-8'
    body '<b>hello world in HTML</b>'
  end
end
于 2013-08-25T09:59:28.947 回答