amazon-web-services - 无法在通过 Zappa(lambda) 托管的 django 应用程序上通过 SES 发送电子邮件
问题描述
所以我使用 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 添加规则来编辑安全组的入站规则。完成此操作后,您将创建一个端点,附加已编辑的安全组,一旦端点可用,它就应该从那里开始工作。
推荐阅读
- function - 无效的二元操作数,缺少理论
- powershell - 以字母命名的目录路径的正则表达式
- python-3.x - Keras 模型的准确度和精确度
- javascript - 当定义的任何变量在内存中有 0 或 1 个转储值时,null 如何表示“无值”?
- python - 如何在 Python 中部分转置 CSV 表
- swift - ios 12 (Swift 4.2) 之后按钮渐变不起作用
- java - findViewById-int 上的 android studio 空指针异常
- mysql - 如何在 select 语句中选择 count()
- python-3.x - 更新嵌套字典中的值正在更新同一级别中的其他值
- microsoft-graph-api - Microsoft Graph API Beta Outlook 任务重复