I'm sure this has been asked a million times before but I can't find anything that works for me so I'm asking again!
I just need a way of sending emails using ActionMailer in rails 3. I have followed numerous tutorials including the Railscasts tutorial on the new ActionMailer and I can see the mails being generated but I don't receive them.
I have tried a bunch of different ways but they generally amount to configuring the following settings
ActionMailer::Base.delivery_method = :smtp  ActionMailer::Base.smtp_settings = {   :address              => "smtp.gmail.com",   :port                 => "587",   :domain               => "gmail.com",   :user_name            => "[email protected]",   :password             => "yyy",   :authentication       => "plain",   :enable_starttls_auto => true }   I have tried the above code (with valid gmail details of course) in my config/environment.rb, config/environments/development.rb and currently have it in its own initialiser config/initialisers/setup_mail.rb
I have also tried with a few different smtp servers including Gmail and Sendgrid, adjusting the smtp settings accordingly but still nothing. I can see the mail in the terminal and the development log and that's it.
Does anyone know of any other gotcha's that I may have missed that need to be setup for ActionMailer to work? Failing that is there a way of getting more information about why the mails aren't being sent? I have
config.action_mailer.raise_delivery_errors = true   set in my config/development.rb but the development log still just shows the same as I see in the terminal.
For what it's worth, I am developing on a Ubuntu 10.04 laptop just in case there's any specific setup needed for that.
Many thanks
Well I have resolved the issue, but quite why this works and the other methods did not, I don't know.
The solution was to create an initialiser in config/initialisers/setup_mail.rb containing the following
if Rails.env != 'test'   email_settings = YAML::load(File.open("#{Rails.root.to_s}/config/email.yml"))   ActionMailer::Base.smtp_settings = email_settings[Rails.env] unless email_settings[Rails.env].nil? end   I then added config/email.yml containing the details of the dev and production email accounts
development:   :address: smtp.gmail.com   :port: 587   :authentication: plain   :user_name: xxx   :password: yyy   :enable_starttls_auto: true production:   :address: smtp.gmail.com   :port: 587   :authentication: plain   :user_name: xxx   :password: yyy   :enable_starttls_auto: true   Like I say, no idea why, but this seemed to do the trick. Thanks all for the pointers
I have the following in config/environments/development.rb
config.action_mailer.raise_delivery_errors = true config.action_mailer.perform_deliveries = true   The actual mail-configuration, config.actionmailer.* i have placed in config\application.rb.
Hope this helps :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With