微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在通过Zappalambda托管的Django应用上通过SES发送电子邮件

如何解决无法在通过Zappalambda托管的Django应用上通过SES发送电子邮件

所以我已经使用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',['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向导后,它向我显示了相同的错误

不确定我在做什么错。任何帮助将不胜感激。

解决方法

这个 AWS blog post 可能会为您解决问题。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。