动作机不起作用



因此,我正在尝试为我的网站制作邮件,该网站在创建订单时向所有用户发送电子邮件。我不确定该如何处理,所以我一直在尝试很多不同的事情。目前,我搞砸了,以至于我什至无法启动我的应用程序。(不好。)

这是我的错误消息:/users/brawain/rails_projects/sample_app/config/config/initializers/setup_mail.rb:12:iin'

目前,这是我的邮件的样子:

订单控制器

class OrdersController < ApplicationController
def new
  def create
    @order = Order.new(user_params)
    if @order.save
        UserMailer.work_order(@user).deliver
    else
      render 'new'
    end
  end
end
end

我制作的一个新文件,称为development_mail_interceptor.rb,在环境文件夹中的配置文件夹中找到。

class DevelopmentMailInterceptor
def self.delivering_email(message)
message.subject = "#{message.to} #{message.subject}"
message.to = "cwolford@andover.edu"
end
end

file work_order_order.text.rb在user_mailer的视图中刚有文本。

在"初始化"文件夹中的配置文件夹中,我有一个名为setup_mail.rb

的文件
ActionMailer::Base.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domain               => "student.andover.edu",
  :user_name            => "techmasterswork",
  :password             => "happycrazy",
  :authentication       => "plain",
  :enable_starttls_auto => true
}
ActionMailer::Base.default_url_options[:host] = "localhost:3000"
Mail.register_interceptor(DevelopmentMailInterceptor) if Rails.env.development?

然后在应用程序下,我有一个名为邮件的文件夹,其中我有文件user_mailer.rb

class UserMailer < ActionMailer::Base
default from: "techmasterswork@gmail.com"
def work_order(user)
  @user = user
  mail to: user.email, subject: "Work Order Form"
end
end

我有一个偷偷摸摸的怀疑,最终应该是order_mailer.rb,但我不确定。无论如何,我知道这需要很多帮助。您将如何解决此问题?

您可以尝试将developmentMailinterceptor类放在lib目录中,以开发_mail_interpector.rb,然后在您的setup_mail.rb文件中,包括 require 'development_mail_interceptor'

发生了错误,因为该类未加载到导轨环境中(可能不是标准负载路径的一部分)。如果您转到Rails控制台,然后键入类名DevelopmentMailInterceptor,则会遇到相同的错误。您可以尝试在setup_mail.rb中需要文件。

但是,您真的应该重新考虑您的方法。这样做的一种更为标准的(更简单)的方法是在after_create上触发电子邮件从您的Order类创建回调。只需在回调中调用UserMailer.work_order(user).deliver即可。

最新更新