【问题标题】:Weblate setup SES email for password resetWeblate 设置用于密码重置的 SES 电子邮件
【发布时间】:2019-09-30 07:07:34
【问题描述】:

我尝试在 AWS 上设置一个 Weblate 实例来发送密码重置电子邮件。我按照以下步骤操作:

pip install boto
pip install django-ses
sudo vim /opt/bitnami/apps/django/lib/python3.7/site-packages/Django-2.1.4-py3.7.egg/django/conf/global_settings.py
EMAIL_BACKEND = 'django_ses.SESBackend'
AWS_ACCESS_KEY_ID = 'xxxx'
AWS_SECRET_ACCESS_KEY = 'xxx'

但是它仍然无法正常工作,而且我没有收到任何错误。我的 AWS 密钥拥有 SES 的完全权限。

更新:

如果我从./manage.py shell 运行 send_mail,我会得到以下输出:

>>> send_mail('Subject here', 'Here is the message.', 'xx@gmail.com',['xx@gmail.com'], fail_silently=False)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/opt/bitnami/apps/weblate/venv/lib/python3.7/site-packages/django/core/mail/__init__.py", line 60, in send_mail
    return mail.send()
  File "/opt/bitnami/apps/weblate/venv/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/opt/bitnami/apps/weblate/venv/lib/python3.7/site-packages/django/core/mail/backends/smtp.py", line 103, in send_messages
    new_conn_created = self.open()
  File "/opt/bitnami/apps/weblate/venv/lib/python3.7/site-packages/django/core/mail/backends/smtp.py", line 63, in open
    self.connection = self.connection_class(self.host, self.port, **connection_params)
  File "/opt/bitnami/python/lib/python3.7/smtplib.py", line 251, in __init__
    (code, msg) = self.connect(host, port)
  File "/opt/bitnami/python/lib/python3.7/smtplib.py", line 336, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/opt/bitnami/python/lib/python3.7/smtplib.py", line 307, in _get_socket
    self.source_address)
  File "/opt/bitnami/python/lib/python3.7/socket.py", line 727, in create_connection
    raise err
  File "/opt/bitnami/python/lib/python3.7/socket.py", line 716, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

【问题讨论】:

  • 如果没有任何类型的日志,很难说出问题所在。
  • 尝试至少运行./manage.py check,它会显示任何连接问题(这些问题也应该在管理界面中可见)。如果这可行,那么实际发送电子邮件存在问题(不确定 ses 后端的行为以及何时验证凭据),这些应该在 celery 日志中可见。
  • sudo ./manage.py check System check identified no issues (0 silenced).
  • 对不起,我应该提到./manage.py check --deploy,但你还是收到了电子邮件错误。

标签: django amazon-ses weblate


【解决方案1】:

您正在编辑 Django 默认设置,这是更改配置的奇怪方式,但似乎 Bitnami 推荐这种方法。似乎设置没有正确应用,因为测试命令仍然使用默认的 SMTP 后端。

检查事项:

  • 是实际应用的设置:./manage.py shell -c 'from django.conf import settings; print(settings.EMAIL_BACKEND)'
  • django-ses 是否已安装到系统中?最好以root身份运行安装sudo pip install django-ses
  • 你不是在混合 Python 2 和 Python 3 环境吗(不确定在 Bitnami 图像中是如何完成的)

【讨论】:

  • sudo ./manage.py shell -c 'from django.conf import settings; print(settings.EMAIL_BACKEND)' 返回django.core.mail.backends.smtp.EmailBackend 似乎没有正确应用默认设置的设置
  • 有什么办法解决这个问题吗?
  • 某处应该有weblate/settings.py,这是应用配置的更好地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-26
  • 1970-01-01
  • 2012-03-09
  • 2017-08-30
  • 1970-01-01
相关资源
最近更新 更多