Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Net::SMTPAuthenticationError (530-5.5.1 Authentication Required. Learn more at ):

I am following Rails Tutorial on Chapter 10. Since I do not have credit card, I am trying to send the email in development. I am newbie to programming, so I just want to see how it works.

But, I am getting this error.

    Net::SMTPAuthenticationError (530-5.5.1 Authentication Required. Learn more at
    ):
      app/models/user.rb:65:in `send_password_reset_email'
      app/controllers/password_resets_controller.rb:13:in `create'

  Rendered /home/budi/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates/rescues/_source.erb (5.3ms)
  Rendered /home/budi/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates/rescues/_trace.html.erb (2.6ms)
  Rendered /home/budi/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates/rescues/_request_and_response.html.erb (1.1ms)
  Rendered /home/budi/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates/rescues/_web_console.html.erb (0.9ms)
  Rendered /home/budi/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates/rescues/diagnostics.html.erb within rescues/layout (30.9ms)

could somebody show me where I missed?

development.rb

  config.cache_classes = false
  config.eager_load = false
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default_url_options = { :host => 'localhost:3000' }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :address              => "smtp.gmail.com",
    :port                 => 587,
    :domain               => 'mail.google.com',
    :user_name            => ENV['#I hardcoded it here'], # I put my my email which I used regularly here.
    :password             => ENV['#I hardcoded it here'], # I put the password here.
    :authentication       => 'plain',
    :enable_starttls_auto => true
  }

  config.active_support.deprecation = :log
  config.active_record.migration_error = :page_load
  config.assets.debug = true
  config.assets.digest = true
  config.assets.raise_runtime_errors = true

user_mailer.rb

class UserMailer < ApplicationMailer
  def account_activation(user)
    @user = user
    mail to: user.email, subject: "Account activation"
  end

  def password_reset(user)
    @user = user
    mail to: user.email, subject: "Password reset"
  end
end

application_mailer.rb

class ApplicationMailer < ActionMailer::Base
  #default from: "[email protected]"
  default from: "[email protected]" # I put my my email which I used regularly here.
  layout 'mailer'
end

password_reset_controller.rb

class PasswordResetsController < ApplicationController
  before_action :get_user,         only: [:edit, :update]
  before_action :valid_user,       only: [:edit, :update]
  before_action :check_expiration, only: [:edit, :update]

  def new
  end

  def create
    @user = User.find_by(email: params[:password_reset][:email].downcase)
    if @user
        @user.create_reset_digest
        @user.send_password_reset_email
        flash[:info] = "Email sent with password reset instructions"
        redirect_to root_url
    else
        flash.now[:danger] = "Email address not found"
        render 'new'
    end
  end

  def edit
  end

  def update
    if params[:user][:password].empty?
        @user.errors.add(:password, "can't be empty")
        render 'edit'
    elsif @user.update_attributes(user_params)
        log_in @user
        flash[:success] = "Password has been reset."
        redirect_to @user
    else
        render 'edit'
    end

  end

  private

  def user_params
    params.require(:user).permit(:password, :password_confirmation)
  end

  def get_user
    @user = User.find_by(email: params[:email])
  end

  # Confirms a valid user.
  def valid_user
    unless (@user && @user.activated? && @user.authenticated?(:reset, params[:id]))
        redirect_to root_url
    end
  end

  # Checks expiration of reset token.
  def check_expiration
    if @user.password_reset_expired?
        flash[:danger] = "Password reset has expired."
        redirect_to new_password_reset_url
    end
  end
end
like image 245
Codelearner777 Avatar asked Dec 25 '15 06:12

Codelearner777


1 Answers

I would like to suggests you to follow up with

  • Railsapps -Send Mail and

  • Railsapps -rails-environment-variables

Would Definitely help You

Edit Update

Allow less secure apps to access accounts

Google may block sign-in attempts from some apps or devices that do not use modern security standards. Since these apps and devices are easier to break into, blocking them helps keep your account safe.

Some examples of apps that do not support the latest security standards include:

  • The Mail app on your iPhone or iPad with iOS 6 or below The Mail app

  • on your Windows phone preceding the 8.1 release Some Desktop mail

  • clients like Microsoft Outlook and Mozilla Thunderbird

like image 100
Gupta Avatar answered Nov 15 '22 03:11

Gupta