【发布时间】:2014-10-02 07:09:15
【问题描述】:
我一直在拼命尝试使用 RoR 中的 Action Mailer 类发送电子邮件,即使终端显示正在发送消息,它仍然会返回此错误:
et::SMTPAuthenticationError: 534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbtOS
from /Users/abhasarya/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/smtp.rb:968:in `check_auth_response'
from /Users/abhasarya/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/smtp.rb:739:in `auth_plain'
from /Users/abhasarya/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/smtp.rb:731:in `authenticate'...
这是我的邮件程序类在 app/mailers/my_mailer.rb 中的样子:
class MyMailer < ActionMailer::Base
default from: "from@example.com"
def welcome_email(user)
@user = user
mail(to: user.email,
from: 'example_email@gmail.com',
subject: 'Welcome!')
end
end
这是我的 config/application.rb 文件的样子:
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
#domain: 'gmail.com',
user_name: 'example_email@gmail.com',
password: 'my_password',
authentication: 'plain',
enable_starttls_auto: true
}
config.action_mailer.default_url_options = {
:host => "localhost",
:port => 3000
}
在我的 config/environments/development.rb 文件中,我也有这两行:
config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_deliveries = true
我的问题是,每当我启动 Rails 控制台(在开发中工作,不知道如何在生产中运行)时,将用户的电子邮件分配给用户变量,然后输入命令:MyMailer.welcome_email(user).deliver
终端说:
Rendered my_mailer/welcome_email.html.erb (11.7ms)
Rendered my_mailer/welcome_email.text.erb (0.5ms)
Sent mail to abhas.arya@yahoo.com (923.1ms)
Date: Fri, 08 Aug 2014 13:54:38 -0400
From: abhas.aryaa@gmail.com
To: abhas.arya@yahoo.com
Message-ID: <53e50ededebb2_2b0b8082dbf8507c5@Abhass-MacBook-Pro.local.mail>
Subject: Welcome!
Mime-Version: 1.0
Content-Type: multipart/alternative;
boundary="--==_mimepart_53e50eded7355_2b0b8082dbf85068f";
charset=UTF-8
Content-Transfer-Encoding: 7bit
但随后呈现错误。我的观点很简单,我认为我不需要将它们包括在这里。我已经拼命尝试了一切,包括解锁谷歌验证码,但仍然没有任何效果。我会很感激任何帮助,我想要的只是将电子邮件发送到正确的收件箱。如果你能解决这个问题,我会永远爱你!!!
【问题讨论】:
标签: ruby-on-rails ruby email gmail