【问题标题】:AWS simple email service works on localhost but not on production Amazon EC2 serverAWS 简单电子邮件服务适用于本地主机,但不适用于生产 Amazon EC2 服务器
【发布时间】:2021-10-28 02:58:22
【问题描述】:

所以我正在为我的网站开发一个邮件 API。场景如下:

  1. 客户连接到端点。
  2. API 端点处理请求并使用邮件服务(基于 aws sdk)发送电子邮件。
  3. API 根据结果返回 Ok/BadRequest。

当我使用在 localhost 上运行的 API 执行此操作时,一切正常,并且我正在按预期在我的邮箱中接收电子邮件。但是当我在 Amazon EC2 实例上运行我的 API 服务时,我得到了这个:

响应状态码不表示成功:404(未找到)

我仔细检查了我的 localhost 机器和 EC2 实例(ubuntu 16.10)上是否都有 .aws/credentials 文件。我可以很好地访问在 EC2 实例上运行的 API 服务,因为我得到了 BadRequest 响应。问题是当邮件服务尝试使用亚马逊 SES 发送电子邮件时。我相信这不是代码本身,因为它在 localhost 上运行良好。有什么想法吗?

【问题讨论】:

  • 作为记录,我已经更新了我的 api 代码,所以现在它使用 smtp 协议而不是 aws sdk 发送电子邮件,它按预期工作。所以这显然是 aws sdk 的一个问题,或者我这边缺少某种配置。无论如何,我仍在寻找答案。
  • 您能否成功地进行任何其他 API 调用(例如 ListTemplate())以确认您的凭据设置正确?您的配置文件或代码中region 的值是多少?
  • @JohnRotenstein 其他所有 API 调用都运行良好。就像我之前写的那样,我切换到使用 SMTP 协议发送电子邮件,到目前为止没有问题。你在写什么样的配置文件? AWS 那个?如果是,那么我没有使用任何。

标签: amazon-web-services amazon-ec2 .net-core aws-sdk amazon-ses


【解决方案1】:

如果其他人有同样的问题,更改为端口 587 解决了问题。

默认情况下,Ec2 对端口 25 有非常严格的限制。您可以通过填写正式请求逐个 IP 获得白名单,但如果您要发送到 SES,我们建议使用端口 587 或 2587。

有关端口 25 上的 EC2 节流阀的更多信息: https://aws.amazon.com/premiumsupport/knowledge-center/ec2-port-25-throttle/

有关 SES 可用 SMTP 端口的更多信息: https://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-connect.html

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 2012-06-07
    • 2014-08-11
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 2013-11-23
    • 2017-11-26
    • 1970-01-01
    相关资源
    最近更新 更多