为什么我无法发送包含pow的电子邮件?

时间:2013-02-07 15:07:24

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

我有一个rails项目,它使用ActionMailer发送电子邮件。这似乎与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"]
}

我在山狮上。

由于

3 个答案:

答案 0 :(得分:2)

我有一个不同的建议:

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

在制作中,使用SendGrid而不是GMail。 SendGrid很棒,很容易设置。

答案 1 :(得分:2)

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

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

    export GMAIL_USERNAME=username
    export GMAIL_PASSWORD="my password"
    

    然后我以这种方式重新启动应用程序的worker:

    touch tmp/restart.txt
    

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

答案 2 :(得分:1)

正如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(环境)变量以与服务器一起使用。