0

I'm trying to use ActionMailer to automatically send a user an email. However, after save of the user, which should trigger the email. I don't see that any message has been sent to my inbox. The save took place without mistakes, but the mail never arrived. What is the problem?

mailers

class OrderNotifier < ActionMailer::Base default from: "[email protected]" 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 = "[email protected]" ... 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 

view/order_notifier

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

1 Answer 1

1

you should only have one of those settings:

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

other than that always have the log/development.log file open and see what happens. rails will most likely tell you what it's about to do.

if you want to learn more about debugging, read this http://nofail.de/2013/10/debugging-rails-applications-in-development/

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.