AWS SNS 和 Ruby on Rails SMTP
Posted
技术标签:
【中文标题】AWS SNS 和 Ruby on Rails SMTP【英文标题】:AWS SNS and Ruby on Rails SMTP 【发布时间】:2017-07-22 14:00:21 【问题描述】: Rails 4.1.4 64 位 Amazon Linux 2016.09 v2.3.1 运行 Ruby 2.3 (Puma)我正在尝试将 AWS SES(https://aws.amazon.com/ses/) 与使用弹性 Beanstalk 的 rails 应用程序设置一起使用。我的production.rb
中有以下内容@
...
config.action_mailer.smtp_settings =
address: 'email-smtp.us-east-1.amazonaws.com',
port: 587,
user_name: ENV['SES_SMTP_USERNAME'], # Your SMTP user
password: ENV['SES_SMTP_PASSWORD'], # Your SMTP password
authentication: :login,
enable_starttls_auto: true
...
但是当我尝试发送电子邮件时,我收到以下错误:
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol
from /opt/rubies/ruby-2.3.1/lib/ruby/2.3.0/net/smtp.rb:587:in `connect'
from /opt/rubies/ruby-2.3.1/lib/ruby/2.3.0/net/smtp.rb:587:in `tlsconnect'
from /opt/rubies/ruby-2.3.1/lib/ruby/2.3.0/net/smtp.rb:555:in `do_start'
from /opt/rubies/ruby-2.3.1/lib/ruby/2.3.0/net/smtp.rb:521:in `start'
追踪还在继续,但我认为这是最重要的一点。
我按照此处列出的说明进行操作:https://www.sitepoint.com/deliver-the-mail-with-amazon-ses-and-rails/
任何建议将不胜感激。
【问题讨论】:
您确定 ENV['SES_SMTP_USERNAME'] 和 ENV['SES_SMTP_PASSWORD'] 可用于您的应用程序吗?您可能想要记录它们的值以进行检查。这些说明将其放在 development.rb 中,这不适用于生产应用程序。出于安全原因,您可能不想将其放在 production.rb 中,但将其放在哪里取决于您的服务器堆栈(apache、nginx、unicorn、passenger、puma 等)以及您使用的 Rails 版本。跨度> 谢谢,我很肯定 ENV 变量可用于配置文件。我认为问题可能是端口。由于某些原因port: 465
似乎解决了这个问题。仍在调查中。
【参考方案1】:
似乎将端口设置为 465 解决了这个问题。
config.action_mailer.smtp_settings =
address: 'email-smtp.us-east-1.amazonaws.com',
port: 465,
user_name: ENV['SES_SMTP_USERNAME'], # Your SMTP user
password: ENV['SES_SMTP_PASSWORD'], # Your SMTP password
authentication: :login,
enable_starttls_auto: true
【讨论】:
以上是关于AWS SNS 和 Ruby on Rails SMTP的主要内容,如果未能解决你的问题,请参考以下文章
使用适用于 Ruby 的 AWS 开发工具包发布到 SNS 主题时指定区域
使用适用于Ruby on Rails的AWS CI / CI流程进行部署
启动 Ruby on Rails 应用程序时无法通过 AWS Elastic Beanstalk“恭喜”屏幕
将Ruby on Rails项目从github上传到AWS EC2实例错误