猿问

如何修复 ConnectionRefusedError:

如何使用 Django 电子邮件修复 [WinError 10061]?

(目标机器主动拒绝,无法连接)




我正在使用 Django 发送电子邮件。我显然遇到了一个常见的网络错误,但我读过的任何答案都没有解决。我相信我的插座有问题,





当我发送电子邮件时,出现以下错误:

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

File "C:\Users\Jaime\Miniconda3\envs\mydjango\lib\site- 

packages\django\core\mail\message.py", line 291, in send

return self.get_connection(fail_silently).send_messages([self])

File "C:\Users\Jaime\Miniconda3\envs\mydjango\lib\site- 

packages\django\core\mail\backends\smtp.py", line 103, in send_messages

new_conn_created = self.open()

File "C:\Users\Jaime\Miniconda3\envs\mydjango\lib\site- 

packages\django\core\mail\backends\smtp.py", line 63, in open

self.connection = self.connection_class(self.host, self.port, 

**connection_params)

File "C:\Users\Jaime\Miniconda3\envs\mydjango\lib\smtplib.py", line 251, 

in __init__

(code, msg) = self.connect(host, port)

File "C:\Users\Jaime\Miniconda3\envs\mydjango\lib\smtplib.py", line 336, 

in connect

self.sock = self._get_socket(host, port, self.timeout)

File "C:\Users\Jaime\Miniconda3\envs\mydjango\lib\smtplib.py", line 307, 

in _get_socket

self.source_address)

File "C:\Users\Jaime\Miniconda3\envs\mydjango\lib\socket.py", line 727, 

in create_connection

raise err

File "C:\Users\Jaime\Miniconda3\envs\mydjango\lib\socket.py", line 716, 

in create_connection

sock.connect(sa)

ConnectionRefusedError: [WinError 10061] No connection could be made 

because 

the target machine actively refused it

这是我尝试过的:

1)

import socket

socket.getaddrinfo('hotmail-com.olc.protection.outlook.com', 80)

socket.getaddrinfo('smtp.hotmail.com', 8000)

socket.getaddrinfo('smtp.hotmail.com', 587)

2)

关闭防火墙/防病毒


3)

在 python shell 和 Django 应用程序中运行代码


4)

我从 nslookup MX 查询中获得了 smtp 服务器



我在 python shell 中运行这个测试代码:

from django.conf import settings

from django.core.mail import EmailMessage

settings.configure()


from django.core.mail import send_mail


import socket

socket.getaddrinfo('hotmail-com.olc.protection.outlook.com', 80)


预期结果

现在我想从 localhost Django 应用程序发送电子邮件。将来我会将代码上传到 pythonanywhere.com 服务器。



RISEBY
浏览 231回答 2
2回答

一只名叫tom的猫

[已修复] 这是我发送电子邮件的 Django 代码:(大约 12 小时后...)1) 我在 settings.py 中缺少配置settings.pyDEFAULT_FROM_EMAIL = 'admin@********.com'SERVER_EMAIL = 'admin@********.com'EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'EMAIL_USE_TLS = TrueEMAIL_HOST = 'mail.********.com'EMAIL_HOST_USER = 'admin@********.com'EMAIL_HOST_PASSWORD = '*******'EMAIL_PORT = 5872) Windows 配置它与以下无关:防火墙杀毒软件3) 我不确定 SMTP 服务器的名称确保您拥有正确的凭据 settings.py我的hotmail最后没有用。我不得不使用主机服务提供的电子邮件。4) Python shell 与 Django shell 不同我正在 python shell 中测试代码。正确的做法是调用:python manage.py shell而不仅仅是 python发送电子邮件(在您配置好 settings.py 文件之后)您可以打开 Django shell 并复制代码或在 Django `views.py` 文件中写入特定视图from django.core.mail import EmailMessagemail_subject = 'Active a sua conta.'message = "message"to_email = "jaimedcsilva@hotmail.com"email = EmailMessage(&nbsp; &nbsp; mail_subject, message,to=[to_email])email.send()值得一提:不适用于端口 465电子邮件有时会进入垃圾文件夹谢谢海梅

侃侃无极

这些EMAIL_*值需要在您的设置模块中,而不是在您的脚本中。如果没有这些值,EmailBackend处理发送消息的类将默认尝试连接到localhost:25.&nbsp;由于您没有在本地系统上运行 SMTP 服务器,因此它拒绝连接。您不需要该EMAIL_BACKEND值,因为它是默认值,但将其他EMAIL_*值移动到您的设置模块中。
随时随地看视频慕课网APP

相关分类

Python
我要回答