Search code examples
ruby-on-rails-3actionmailerrailscasts

Rails Cast: ActionMailer Email not sent to inbox


The server states that the email was sent to the correct address but I am not getting the message in my inbox.

My Setup_mail.rb file

ActionMailer::Base.smtp_settings ={
  :address          => "smtp.gmail.com",
  :port         => 587,
  :domain           => "gmail.com",
  :user_name        => "my_user_name@gmail.com",
  :password         => "my_password",
  :authentication       => "Plain",
  :enable_starttls_auto => true
}

My development.rb file is:

# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_deliveries = true #default value
config.action_mailer.delivery_method = :smtp #default value

My test.rb file is:

config.action_mailer.delivery_method = :smtp

I have tried multiple variations and am lost. I am running on a Windows 7 machine. I am running Ruby 1.8.7 and Rails 3.0.7

Can anyone help?

Here is my create method:

def create
 @user = User.new(params[:user])
 if @user.save
   UserMailer.registration_confirmation(@user).deliver
   sign_in @user
   redirect_to @user, :flash => { :success => "Welcome to the Sample App!" }
 else
   @title = "Sign up"
   render 'new'
 end
end

My user_mailer.rb class UserMailer < ActionMailer::Base

default :from => "my_user_name@gmail.com"

def registration_confirmation(user)
mail(:to => user.email, :subject => "Thanks for registering")

end
end

Solution

  • Take a look at your server. I'm pretty sure that you can see in your logs that it's actually trying to send the mail.

    The problem is that Google doesn't trust your local IP address and your mails won't get delivered (not even to the spam directory). There is no way to work around this but using a whitelisted server.

    If you try your app in production this should normally work, for example deploy your app to heroku to test it.