【问题标题】:Why am I unable to send an email with pow?为什么我无法使用 pow 发送电子邮件?
【发布时间】:2013-08-13 00:37:05
【问题描述】:

我有一个使用 ActionMailer 发送电子邮件的 rails 项目。这似乎与 localhost:3000 上的 'rails server' 工作正常,但是当我使用 pow 时,我从 smtp 服务器收到身份验证错误消息。我猜这与环境变量有关。这是配置代码

 config.action_mailer.smtp_settings = {
 address: "smtp.gmail.com",
 port: 587,
 domain: "railscasts.com",
 authentication: "plain",
 enable_starttls_auto: true,
 user_name: ENV["GMAIL_USERNAME"],
 password: ENV["GMAIL_PASSWORD"]
}

我在山狮上。

谢谢

【问题讨论】:

  • domain: "railscasts.com" 可能与它有关
  • 我会尝试删除它,但再次注意,rails 服务器工作正常,只有 pow 不能。

标签: ruby-on-rails ruby email rack-pow


【解决方案1】:

我有一个不同的建议:

在开发中,只需使用letter_opener。无论如何,在这种情况下,它比实际发送电子邮件更有用。

在生产中,使用 SendGrid 而不是 GMail。 SendGrid 非常棒,而且非常易于设置。

【讨论】:

  • 开信刀看起来很酷。但是,SendGrid 对我的需求来说太重了。我的基本上只是一个爱好项目。
【解决方案2】:

Pow 通过检查应用程序根目录中的两个文件来加载环境变量

  1. .powrc
  2. .powenv

我使用 touch 命令创建了 .powrc 文件,然后添加了我的环境变量

export GMAIL_USERNAME=username
export GMAIL_PASSWORD="my password"

然后我以这种方式重新启动了应用程序的工作器:

touch tmp/restart.txt

现在可以使用电子邮件了!

【讨论】:

  • 供我和其他任何人参考(因为一开始对我来说并不是那么容易理解):按照 Tushar 的描述使用 .powrc 中的变量,然后在您的环境文件中使用(例如 development.powrc 中的变量)。 rb) 使用ENV["GMAIL_USERNAME"] 作为您的用户名(或任何您称之为变量的名称)。您的密码也是如此。可能我只是跛脚,这对每个人都很清楚,但它可能对初学者有用:)
【解决方案3】:

正如 blamattina 所建议的,它可能与您的配置文件中的域有关!根据Ruby on Rails Guides给出的example

正确的、与 Gmail 兼容的配置如下所示:

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address              => "smtp.gmail.com",
:port                 => 587,
:domain               => 'baci.lindsaar.net',
:user_name            => '<username>',
:password             => '<password>',
:authentication       => 'plain',
:enable_starttls_auto => true  }

您的domain 设置为railscasts.com。除非那是您的网站,否则我的猜测是该域不正确。其实也是apparently optional

这个 StackOverflow 详细说明了一个插件曾经是必需的,但如果您使用的是 Rails 3.2 或更高版本,则不再需要该插件。文章顶部答案下方的评论详细说明了domain 是可选的。

更新:根据您描述的错误,您似乎遇到了身份验证错误!这可能是因为您的登录凭据not properly registering

该用户在使用 Heroku 的上下文中询问,但错误是相同的。如果您的应用程序在 Rails 服务器上正常工作,但在 Pow 上不能正常工作,则这是服务器端设置问题。该解决方案涉及需要正确设置您的ENV(环境)变量以与您的服务器一起使用。

【讨论】:

  • 我尝试摆脱该域,但它仍然无法正常工作。具体的错误消息是 SubscribersController#send_email 530-5.5.1 Authentication Required 中的 Net::SMTPAuthenticationError。了解更多信息
  • 这可能会回答您的问题!如果这是您遇到的身份验证错误,可能是因为您的登录凭据未正确注册:stackoverflow.com/questions/11302900/… 此用户在使用 Heroku 的上下文中询问,但错误是相同的。它可能需要正确设置您的ENV(环境)变量。首先,尝试设置不带 ENV 前缀的用户名和密码。
猜你喜欢
  • 2011-08-14
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-19
  • 2017-09-28
相关资源
最近更新 更多