【问题标题】:BotoServerError: 400 Bad Request: Mail is not sendingBotoServerError:400 错误请求:邮件未发送
【发布时间】:2015-12-21 19:02:28
【问题描述】:
from datetime import datetime as dt, timedelta, date
from django.conf import settings
from django.core.mail import send_mail
from django.core.mail import EmailMultiAlternatives
from django.core.management.base import BaseCommand, CommandError
from hive.apps.accounts.sms_utils import send_sms_twilio



to_email = ['admin@domain.com']
subject = 'Your subject here'
email_body = 'The following clients are currently eligible for Test.Please contact them .<br>'


msg = EmailMultiAlternatives(subject, '', settings.DEFAULT_FROM_EMAIL, to_email)
msg.attach_alternative(email_body, "text/html")
msg.send()

当我使用 AWS 实例在 centos 上运行此代码时,出现以下错误

 BotoServerError: 400 Bad Request
  <ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
  <Error>
  <Type>Sender</Type>
  <Code>RequestExpired</Code>
  <Message>Request timestamp: Wed, 01 Oct 2014 07:35:22 GMT expired.  It must be within 300 secs/ of server time.</Message>
  </Error>
  <RequestId>c79a9723-493c-11e4-b2d8-51a7cb197196</RequestId>
  </ErrorResponse>

当它在另一个 AWS 实例上工作时。

我已经测试了以下可能性。

  1. 服务器日期和时间。
  2. 简单邮件也无法正常工作: send_mail('你的主题',str(e), settings.DEFAULT_FROM_EMAIL, fail_email , fail_silently=False)

【问题讨论】:

  • 嗯,错误是说您的电子邮件请求时间戳超过 5 分钟,所以可能时间漂移?服务器上date 的输出是什么。

标签: python django amazon-web-services boto


【解决方案1】:

该错误表明您的服务器时间未与亚马逊服务器的时间同步...

您可以通过运行以下命令查看亚马逊服务器的时间:

wget -S "https://email.us-east-1.amazonaws.com"

在返回的消息中查找时间戳。将 us-east-1 替换为您相应的区域端点。

将其与您系统的时间进行比较...

如果你需要一个 NTP 服务器,你可以使用:

0.amazon.pool.ntp.org
1.amazon.pool.ntp.org
2.amazon.pool.ntp.org
3.amazon.pool.ntp.org

如果这是在您自己的 Amazon VPC 中,您可以在指定了这些 ntp 服务器的 VPC 上设置 DHCP 选项集。如果您的服务器仍未同步,请确保您没有阻止 ntp (UDP 123) 的安全组。

【讨论】:

    【解决方案2】:

    在我的情况下,我的 Ubuntu 服务器与 SES 后端不同步,并返回了相同的消息。解决它:

    1. 检查 SES 上的时间和您的本地时间:检查 SES 时间 wget -S "https://email.eu-west-1.amazonaws.com" 根据您的电子邮件端点更改链接。
    2. 使用date检查服务器上的时间

    3. 如果它们不同,请在服务器上安装 ntp,sudo apt-get install ntp

    4. 最后同步你的服务器时间:

    sudo service ntp stop sudo ntpdate -s time.nist.gov sudo service ntp start

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 2023-03-13
      • 2018-07-22
      • 2018-07-07
      • 1970-01-01
      相关资源
      最近更新 更多