ActionMailer没有发送我的电子邮件

时间:2014-05-15 19:50:47

标签: ruby email ruby-on-rails-4 actionmailer

我正在尝试使用ActionMailer自动向用户发送电子邮件。但是,在保存用户之后,应该触发电子邮件。我没有看到任何消息已发送到我的收件箱。保存发生没有错误,但邮件从未到达。有什么问题?

邮件程序

class OrderNotifier < ActionMailer::Base
  default from: "from@example.com"

  def received(order)
    @order = order
    mail to: order, subject: 'Pragmatic Store Order Confirmation'
  end

end

development.rb

Depot::Application.configure do
  # Settings specified here will take precedence over those in config/application.rb.

  # In the development environment your application's code is reloaded on
  # every request. This slows down response time but is perfect for development
  # since you don't have to restart the web server when you make code changes.
  config.cache_classes = false

  # Do not eager load code on boot.
  config.eager_load = false

  # Show full error reports and disable caching.
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false

  # Don't care if the mailer can't send.
  config.action_mailer.raise_delivery_errors = false

  # Print deprecation notices to the Rails logger.
  config.active_support.deprecation = :log

  # Raise an error on page load if there are pending migrations
  config.active_record.migration_error = :page_load

  # Debug mode disables concatenation and preprocessing of assets.
  # This option may cause significant delays in view rendering with a large
  # number of complex assets.
  config.assets.debug = true
  config.action_mailer.delivery_method = :sendmail
  config.action_mailer.delivery_method = :test

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
      address:
          "smtp.gmail.com",
      port:
          587,
      domain:
          "domain.of.sender.net",
      authentication: "plain",
      user_name:
          "dave",
      password:
          "secret",
      enable_starttls_auto: true
  }


end

controller.rb

def create
    @order = "a2010@mail.ru"
    ...
    respond_to do |format|
      if @user.save

        OrderNotifier.received(@order).deliver

        format.html { redirect_to @user}
        format.json { render action: 'show', status: :created, location: @user }
      else
        format.html { render action: 'new' }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      ...
    end

查看/ order_notifier

Welcome to example.com
Thank you for your recent order from The Pragmatic Store.

1 个答案:

答案 0 :(得分:1)

你应该只有这些设置之一:

config.action_mailer.delivery_method = :sendmail
config.action_mailer.delivery_method = :test
config.action_mailer.delivery_method = :smtp

除此之外总是打开log / development.log文件,看看会发生什么。 rails很可能会告诉你它将要做什么。

如果您想了解有关调试的更多信息,请阅读此http://nofail.de/2013/10/debugging-rails-applications-in-development/