从生产环境发送邮件时收到错误,特别是:
Net::SMTPAuthenticationError (530-5.5.1 Authentication Required)
在我的本地计算机和开发环境中,我正在使用ENV[GMAIL_USERNAME]
和ENV[GMAIL_PASSWORD]
声明密码,并且它正常工作,声明的ENV存储在我的.bash_profile中
# Development Environment for Action Mailer config
config.action_mailer.default_url_options = { host: '0.0.0.0:3000' }
config.action_mailer.perform_deliveries = true
config.action_mailer.default charset: 'utf-8'
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'mydomain.com',
authentication: "plain",
enable_starttls_auto: true,
user_name: ENV["GMAIL_USERNAME"],
password: ENV["GMAIL_PASSWORD"]
}
# Production Environment for Action Mailer config
config.action_mailer.default_url_options = { host: 'mydomain.com' }
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = false
config.action_mailer.default charset: 'utf-8'
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
domain: "mydomain.com",
authentication: "plain",
enable_starttls_auto: true,
user_name: ENV["GMAIL_USERNAME"],
password: ENV["GMAIL_PASSWORD"]
}
不幸的是,在制作中我发送邮件时收到错误。但是,如果我在environments/production.rb
中对用户名和密码进行硬编码,则可行。 {。1}}和`ENV [“GMAIL_PASSWORD”]在.bash_profile中设置:
ENV["GMAIL_USERNAME"]
我认为应用程序无法调用export GMAIL_USERNAME="hello@mydomain.com"
export GMAIL_PASSWORD="mypassword"
和ENV["GMAIL_USERNAME"]
但是当我跳转到生产rails控制台并ENV["GMAIL_PASSWORD"]
时,它会输出正确的凭据。
我已经重启Apache并多次重启我的应用程序,但我很困惑下一步该做什么。
非常感谢任何帮助。
先谢谢你。
答案 0 :(得分:3)
谁的bash个人资料?你的用户? Apache不会在启动时读取这些配置文件,因为它不运行bash来启动服务器。当您登录服务器时,您的配置文件会被获取。这就是为什么它在你测试时有效。
您需要确保在脚本或运行apache的环境中定义环境变量。根据您的服务器,这可能位于/ etc / apache2 / envvars中,或者添加到apache的启动脚本中。