smtplib.SMTPServerDisconnected:连接意外关闭,我无法修复它

问题描述 投票:0回答:1

我使用代码:

from django.db.models.signals import post_save
from django.dispatch import receiver
from ...models import User as midas_user
from django.core.mail import send_mail
from django.conf import settings
import logging

logger = logging.getLogger(__name__)

@receiver(post_save, sender=midas_user)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        logger.info("New user created: %s", instance.name)
        send_mail("midas_user.instance",
                  "Here is the message",
                  "[email protected]",
                  ["[email protected]"]
                  )

我的设置:

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = "[email protected]"
EMAIL_HOST_PASSWORD = 'i change this string'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

如果我尝试创建用户,则会出现错误:

shop-backend-back         |   File "/usr/local/lib/python3.8/smtplib.py", line 640, in auth
shop-backend-back         |     (code, resp) = self.docmd("AUTH", mechanism + " " + response)
shop-backend-back         |   File "/usr/local/lib/python3.8/smtplib.py", line 430, in docmd
shop-backend-back         |     return self.getreply()
shop-backend-back         |   File "/usr/local/lib/python3.8/smtplib.py", line 403, in getreply
shop-backend-back         |     raise SMTPServerDisconnected("Connection unexpectedly closed")
shop-backend-back         | smtplib.SMTPServerDisconnected: Connection unexpectedly closed

我只是第一次尝试使用 send_mail 并接受这个。如何解决?

python sendmail
1个回答
0
投票

要像这样使用 Gmail,您需要按照此处显示的说明进行操作:

https://support.google.com/mail/thread/40988320?hl=en

正如那里所写:

如果您的帐户启用了两步验证 (2SV),您 将需要使用应用程序特定的密码(在 Gmail 帐户)在应用程序设置中:使用登录 应用程序专用密码

如果未启用两步验证,您必须启用安全性较低的应用程序的访问权限: 使用网络浏览器登录 Gmail 帐户: https://mail.google.com,然后转到“设置”>“帐户和导入”> 其他 Google 帐户设置。在“安全”下,向下滚动并启用 访问不太安全的应用程序。启用 SMTP 需要此设置, POP 或 IMAP 访问。

本文还包括一些进一步的故障排除步骤。

但从你的错误可以清楚地看出,这不是Python问题。

© www.soinside.com 2019 - 2024. All rights reserved.