gpt4 book ai didi

ruby-on-rails - Net::SMTPAuthenticationError(需要 530-5.5.1 身份验证。了解更多信息):

转载 作者:行者123 更新时间:2023-12-04 21:37:29 25 4
gpt4 key购买 nike

我正在关注第 10 章的 Rails 教程。
由于我没有信用卡,我正在尝试发送开发中的电子邮件。我是编程新手,所以我只想看看它是如何工作的。

但是,我收到此错误。

    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)

有人可以告诉我我错过的地方吗?

发展.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

用户邮件程序.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: "from@example.com"
default from: "xxxxxx@gmail.com" # 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

最佳答案

希望你不要在环境变量ENV中设置用户名和密码相反,你写它 ENV["the actual user name"]
所以它没有通过。

如果您想通过 gmail 发送,请尝试 gmail.com

您可以使用

config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "gmail.com",
:user_name => "test@gmail.com" #your gmail id
:password => "1234" #your gmail password
:authentication => :plain,
:enable_starttls_auto => true
}

或者如果你想在 env 中设置密码
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
domain: "gmail.com",
authentication: "plain",
enable_starttls_auto: true,
user_name: ENV["GMAIL_USERNAME"],
password: ENV["GMAIL_PASSWORD"]
}

If you’re familiar with Unix, you’ve likely had experience setting environment variables. Unix environment variables are typically set in a file that is read when starting an interactive shell (the ~/.bashrc file for the bash shell).

For a bash shell, edit the ~/.bashrc file and add:


export GMAIL_USERNAME="myname@gmail.com" 
export GMAIL_PASSWORD="mypassword"

关于ruby-on-rails - Net::SMTPAuthenticationError(需要 530-5.5.1 身份验证。了解更多信息):,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34460636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com