我在通过 django 发送电子邮件时遇到问题

问题描述 投票:0回答:1
I have a problem with send_email by django 
I tryed  gmail and hotmail and email private , all of them return the same error code 
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'mail.privateemail.com'
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'xxxxxx'
EMAIL_USE_TLS = False
EMAIL_PORT = 465
Error console:

` 文件“/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/smtplib.py”,第 398 行,在 getreply 中 行 = self.file.readline(_MAXLINE + 1) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 文件“/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/socket.py”,第707行,在readinto中 返回 self._sock.recv_into(b) ^^^^^^^^^^^^^^^^^^^^^^^^^ ConnectionResetError:[Errno 54] 连接被对等方重置

在处理上述异常的过程中,又发生了一个异常:

回溯(最近一次调用最后一次): 文件“/Volumes/mac-etending/pytonDjango/django-example-4/blog/venv/lib/python3.12/site-packages/django/core/handlers/exception.py”,第 56 行,在内部 响应 = get_response(请求) ^^^^^^^^^^^^^^^^^^^^^^^ 文件“/Volumes/mac-etending/pytonDjango/django-example-4/blog/venv/lib/python3.12/site-packages/django/core/handlers/base.py”,第 197 行,在 _get_response 中 响应=wrapped_callback(请求,*callback_args,**callback_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ 文件“/Volumes/mac-etending/pytonDjango/django-example-4/blog/blog/views.py”,第 64 行,在 post_share 中 send_mail(主题, 消息, '[电子邮件受保护]', [cd['至']]) 文件“/Volumes/mac-etending/pytonDjango/django-example-4/blog/venv/lib/python3.12/site-packages/django/core/mail/init.py”,第 87 行,在 send_mail 中 返回邮件.send() ^^^^^^^^^^^ 文件“/Volumes/mac-etending/pytonDjango/django-example-4/blog/venv/lib/python3.12/site-packages/django/core/mail/message.py”,第 298 行,发送 返回 self.get_connection(fail_silently).send_messages([self]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ 文件“/Volumes/mac-etending/pytonDjango/django-example-4/blog/venv/lib/python3.12/site-packages/django/core/mail/backends/smtp.py”,第 124 行,在 send_messages 中 new_conn_created = self.open() ^^^^^^^^^^^ 文件“/Volumes/mac-etending/pytonDjango/django-example-4/blog/venv/lib/python3.12/site-packages/django/core/mail/backends/smtp.py”,第 80 行,打开 self.connection = self.connection_class( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 文件“/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/smtplib.py”,第 255 行,在 init 中 (代码,消息)= self.connect(主机,端口) ^^^^^^^^^^^^^^^^^^^^^^^^^^ 文件“/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/smtplib.py”,第 343 行,在连接中 (代码, 消息) = self.getreply() ^^^^^^^^^^^^^^^^ 文件“/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/smtplib.py”,第 401 行,在 getreply 中 raise SMTPServerDisconnected("连接意外关闭:" smtplib.SMTPServerDisconnected:连接意外关闭:[Errno 54] 连接已被对等方重置`

django
1个回答
0
投票

当远程服务器意外关闭连接时,会出现您收到的错误消息

ConnectionResetError: [Errno 54] Connection reset by peer

您应该将其设置为您的

Email config settings.py also
,因为您正在使用 SSL 上的 SMPTS(使用端口 465)才能使其正常工作:

 
EMAIL_USE_SSL = True

但是,如果您想使用 TLS,典型端口为 587,您应该设置

EMAIL_USE_TLS = True
。不过 TLS 版本是我经常使用的。

这里:

# set your environmental variables on .env file of your project root directory.

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_PASSWORD = os.getenv('EMAIL_HOST_PASSWORD')
EMAIL_HOST_USER = os.getenv('EMAIL_HOST_USER')
DEFAULT_FROM_EMAIL = os.getenv("DEFAULT_FROM_EMAIL")

PS:确保您的电子邮件服务提供商允许来自应用程序主机的连接,并且您已启用 Django 应用程序访问您的电子邮件帐户所需的权限。

有关更多信息,请查看有关发送电子邮件的 Django 文档。另外,确保 您更新了 Django 和 Python。还要检查您的系统防火墙,如果所有其他解决方案都失败,这可能是原因,我对您的情况表示怀疑。

祝你好运!

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