ruby-on-railsrubyactionmailer

ActionMailer SMTP working in production but not locally


Seems to be the opposite problem to a lot of the questions on here. I've not been able to get the mailers working locally but then I deployed my app to Heroku and everything is fine.

No apparent errors when sending locally. Strangely though, I can have incorrect credentials locally and it will still appear to have sent ok. Almost as if it's not trying to deliver through smtp. I get a message like this in the console after sending: UploadMailer#complete: processed outbound mail in 32.1ms Delivered mail 63ded40c98545_b9cbb90-440@Chriss-MacBook-Pro.local.mail (1238.6ms)

There's nothing in the SendGrid dashboard showing that it has reached their servers.

config/application.rb

    ...
    config.action_mailer.delivery_method :smtp
    ActionMailer::Base.smtp_settings = {
      :user_name => 'apikey',
      :password => ENV['SENDGRID_API_KEY'],
      :address => 'smtp.sendgrid.net',
      :domain => ENV['SENDGRID_DOMAIN'],
      :port => 587,
      :authentication => 'plain',
      :enable_starttls_auto => true
    }

Mailer and mailer view

class UploadMailer < ApplicationMailer
  def complete
    mail(to: 'me@myemail.com', subject: 'foo')
  end
end

# app/views/upload_mailer/complete.html.erb
<h2>
  Hello
</h2>

Environment

Ruby: 3.0.2 (rbenv)

Rails: 6.1.7.2

Tried on Mac and Windows(WSL)


Solution

  • Looks like I was just missing

    config.action_mailer.perform_deliveries = true
    

    in config/environments/development.rb