我有一个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"]
}
我在山狮上。
由于
答案 0 :(得分:2)
我有一个不同的建议:
在开发中,只需使用letter_opener即可。无论如何,它在这种情况下比实际发送电子邮件更有用。
在制作中,使用SendGrid而不是GMail。 SendGrid很棒,很容易设置。
答案 1 :(得分:2)
Pow通过检查应用程序根目录中的两个文件来加载环境变量
我使用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
(环境)变量以与服务器一起使用。