【问题标题】:Unable to send emails via SES on django app hosted through Zappa(lambda)无法在通过 Zappa(lambda) 托管的 django 应用上通过 SES 发送电子邮件
【发布时间】:2021-02-13 20:26:26
【问题描述】:

所以我使用 zappa 在 lambda 上托管了我的网站。我在提交表单后使用 django-amazon-ses 发送电子邮件。

settings.py

AWS_ACCESS_KEY_ID = os.environ.get("AWS_ACCESS_KEY_ID", "my access key")
AWS_SECRET_ACCESS_KEY = os.environ.get("AWS_SECRET_ACCESS_KEY", "my secret key")
DEFAULT_FROM_EMAIL = 'xxxx@xxx.xx'
EMAIL_BACKEND = 'django_amazon_ses.EmailBackend'
AWS_SES_REGION = 'ap-south-1'
AWS_SES_REGION_ENDPOINT = 'email-smtp.ap-south-1.amazonaws.com'

查看

@csrf_exempt
def formSubmit(request):
    if request.method == 'POST':
        var = json.loads(request.body)
        name = var['name1']
        email = var['email1']
        company = var['company1']
        description = var['description1']
        send_mail('subject',
                  'msg',
                  'xxxx@xxx.xx',
                  [email])
        send_mail('subject',
                  'msg',
                  'xxxx@xxx.xx',
                  ['toemail@gmail.com'])
    return JsonResponse({'result': 'done'})

现在这在我的本地主机上运行良好,但是当我尝试在线执行时,它在提交时显示以下错误。

ClientError at /submit/
An error occurred (InvalidClientTokenId) when calling the SendRawEmail operation: The security token included in the request is invalid.

一开始,我以为是因为我没有用 lambda 函数配置 vpc,但是在我配置公共/私有 vpc 向导后,它显示了同样的错误。

不知道我做错了什么。任何帮助将不胜感激。

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-ses zappa amazon-simple-email-service


    【解决方案1】:

    这个AWS blog post 可以为你解决问题。

    基本上,AWS 现在允许您通过 VPC 终端节点连接到 SES,这意味着您不再需要使用互联网网关或 NAT 设备。

    您必须通过为 SMTP 和 SMTPS 添加规则来编辑安全组的入站规则。完成此操作后,您将创建一个端点,附加已编辑的安全组,一旦端点可用,它就应该从那里开始工作。

    【讨论】:

      猜你喜欢
      • 2020-11-25
      • 2016-11-17
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 2015-12-13
      • 1970-01-01
      • 2012-05-05
      • 2017-07-15
      相关资源
      最近更新 更多