Reputation: 283
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.
Upvotes: 0
Views: 329
Reputation: 18835
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/
Upvotes: 1