1

我有一个使用 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"]
}

我在山狮。

谢谢

4

3 回答 3

2

我有一个不同的建议:

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

在生产中,使用SendGrid而不是 GMail。SendGrid 很棒,而且很容易设置。

于 2013-02-07T19:14:29.227 回答
2

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

  1. .powrc
  2. .powenv

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

export GMAIL_USERNAME=username
export GMAIL_PASSWORD="my password"

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

touch tmp/restart.txt

电子邮件现在可以工作了!

于 2013-02-15T06:05:58.520 回答
1

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

正确的、与 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. 除非那是您的网站,否则我的猜测是该域不正确。事实上,它显然也是可选的。

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

更新:根据您描述的错误,您似乎遇到了身份验证错误!这可能是因为您的登录凭据没有正确注册

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

于 2013-02-07T16:13:08.647 回答