Reputation: 3774
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 => '[email protected]',
: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 [email protected] (1097.6ms)
Date: Thu, 29 Dec 2016 09:50:41 +0000
From: [email protected]
Reply-To: [email protected]
To: [email protected]
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 [email protected]!</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.
Upvotes: 2
Views: 2762
Reputation: 1191
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.
Upvotes: 4
Reputation: 29
rails s -e production
or turn on config.action_mailer.raise_delivery_errors = true
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: "[email protected]", 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
Upvotes: 0
Reputation: 1345
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 => "[email protected]",
: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 => "[email protected]"
# ...
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"
Upvotes: 0
Reputation: 379
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
?
Upvotes: 0