我使用代码:
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 并接受这个。如何解决?
要像这样使用 Gmail,您需要按照此处显示的说明进行操作:
https://support.google.com/mail/thread/40988320?hl=en
正如那里所写:
如果您的帐户启用了两步验证 (2SV),您 将需要使用应用程序特定的密码(在 Gmail 帐户)在应用程序设置中:使用登录 应用程序专用密码
如果未启用两步验证,您必须启用安全性较低的应用程序的访问权限: 使用网络浏览器登录 Gmail 帐户: https://mail.google.com,然后转到“设置”>“帐户和导入”> 其他 Google 帐户设置。在“安全”下,向下滚动并启用 访问不太安全的应用程序。启用 SMTP 需要此设置, POP 或 IMAP 访问。
本文还包括一些进一步的故障排除步骤。
但从你的错误可以清楚地看出,这不是Python问题。