所以我使用zappa在lambda上托管了我的网站。我正在使用django-amazon-ses在提交表格后发送电子邮件。
设置.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向导后,它向我显示了同样的错误。
不知道我做错了什么。任何帮助都将不胜感激。
这篇AWS博客文章可能会帮你解决问题。
从本质上讲,AWS现在允许您通过VPC端点连接到SES,这意味着您不再需要使用互联网网关或NAT设备。
您必须通过添加SMTP和SMTPS的规则来编辑安全组的入站规则。完成后,创建一个端点,附加编辑后的安全组,一旦端点可用,它就可以从那里工作。