1

I am using devise for authentication. It provides a forgot password link. When i send email then the email is not sent. Following is the settings i have used. Can you tell me why gmail is not sending the email? I have also turned on "allow less secure app to send email" and i have also enabled imap in gmail setting.

application.rb has the following setting.

ActionMailer::Base.smtp_settings = {


  :address => 'smtp.gmail.com',
  :domain => 'mail.google.com',
  :port => 587,
  :user_name => 'validemail@gmail.com',
  :password => 'validpassword',
  :authentication => 'login',
  :enable_starttls_auto => true


}

development.rb has

  config.action_mailer.default_url_options = { host: '127.0.0.1'}


  config.action_mailer.delivery_method = :smtp

After sending the email i get the following text in the console.

Devise::Mailer#reset_password_instructions: processed outbound mail in 215.2ms
Sent mail to validemail@gmail.com (1097.6ms)
Date: Thu, 29 Dec 2016 09:50:41 +0000
From: please-change-me-at-config-initializers-devise@example.com
Reply-To: please-change-me-at-config-initializers-devise@example.com
To: validemail@gmail.com
Message-ID: <5864dc7161acb_173921a07788707d@kofhearts-rubyonrails-3267120.mail>
Subject: Reset password instructions
Mime-Version: 1.0
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

<p>Hello validemail@gmail.com!</p>

<p>Someone has requested a link to change your password. You can do this through the link below.</p>

<p><a href="http://127.0.0.1/users/password/edit?reset_password_token=WQxYad91mPghMxaurYA5">Change my password</a></p>

<p>If you didn't request this, please ignore this email.</p>
<p>Your password won't change until you access the link above and create a new one.</p>

Redirected to https://rubyonrails-kofhearts.c9users.io/users/sign_in
Completed 302 Found in 1965ms (ActiveRecord: 14.7ms)

UPDATE:

I am just following this tutorial.

https://www.youtube.com/watch?v=ZEk0Jp2dThc

Send email is not working with the settings that are specified in this video.

kofhearts
  • 3,607
  • 8
  • 46
  • 79
  • May be duplicate http://stackoverflow.com/questions/25735206/rails-4-netsmtpauthenticationerror-535-5-7-0-authentication-failed/25884665#25884665 – Shamsul Haque Dec 29 '16 at 09:56
  • I know this isn't an answer to your question, but I gave up on using smtp through gmail. I now use `sendinblue`, they have an smpt service which is free for about 300 emails a day. Also a nice ruby gem so it's quite easy to use. – Eyeslandic Dec 29 '16 at 10:07

4 Answers4

3

Enabling less secure apps in my account settings worked for me.

Google Account settings > Signing in to Google > scroll down to the bottom

Turn on allow less secure apps. Try sending the email again.

a3y3
  • 1,025
  • 2
  • 10
  • 34
0

That's should work. Maybe you could also turn on config.action_mailer.raise_delivery_errors = true in config/environments/development.rb. It's easier to debug.

Maybe you forget to set config.action_mailer.perform_deliveries = true in config/environments/development.rb?

Weibo Chen
  • 369
  • 1
  • 10
  • thanks but even after adding the perform_deliveries setting and raise_delivery_errors flag the email is not sending. I have updated my post above with the console message that is printed after i click on "send me reset password instructions" that is supposed to send email to the provided email. – kofhearts Dec 29 '16 at 09:54
0

Have you tried this?

config.action_mailer.default_url_options = { :host => 'localhost:3000' }
ActionMailer::Base.smtp_settings = {  
  :address              => "smtp.gmail.com",  
  :port                 => 587,  
  :domain               => "gmail.com",  
  :user_name            => "myinfo@gmail.com",  
  :password             => "secret",  
  :authentication       => "plain"
  # :enable_starttls_auto => true # I don't have this, but it should work anyway 
} 

it it's sent maybe you don't receive it because of the spam filter, first thing to check:

class UserMailer < ActionMailer::Base
  default :from => "myinfo@gmail.com"
  # ...
end

You also check your Forwarding and POP/IMAP in your gmail..

include these line of codes on your development.rb

config.action_mailer.default_url_options = {host: 'your server' } # ex. localhost:3000
config.action_mailer.raise_delivery_errors = true # to raise error if smtp has error on setup
config.action_mailer.default :charset => "utf-8"
Karthick Nagarajan
  • 1,327
  • 2
  • 15
  • 27
0
  1. If you are working with Gmail you should activate permission to externals apps send email through SMTP.
  2. In development mode Rails does not send emails, you should run Rails in production rails s -e production or turn on config.action_mailer.raise_delivery_errors = true
  3. do not forget to use mail().deliver or for Rails 5+ mail().delivery_now

look you this is my SMTP configuration

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :address              => ENV['mailer_address'],
    :port                 => ENV['mailer_port'],
    :user_name            => ENV['mailer_username'],
    :password             => ENV['mailer_password'],
    :authentication       => "plain",
    :enable_starttls_auto => true
  }

this is my Class Mailer

def send_email
 mail(to: "example@email.com", subject: 'not reply this message').deliver
end

I call that function from my controller. If you got any error you should print it to check what is the problem.

begin
  myMailer.send_email
rescue  Exception => e
  flash[:error] = "Imposible sent email, #{e.inspect}"
end
Jeff
  • 29
  • 3
  • thanks jeff but i have enabled pop, imap and also enabled less secure apps to access gmail permission. Still with the above settings the email is not getting delivered. – kofhearts Dec 29 '16 at 10:17
  • can you create a mailer testing if it is working?, which Rails version are you working? – Jeff Dec 29 '16 at 12:49