为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复 ConnectionRefusedError:

如何修复 ConnectionRefusedError:

RISEBY 2021-12-21 17:27:50
如何使用 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 sendreturn 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_messagesnew_conn_created = self.open()File "C:\Users\Jaime\Miniconda3\envs\mydjango\lib\site- packages\django\core\mail\backends\smtp.py", line 63, in openself.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 connectself.sock = self._get_socket(host, port, self.timeout)File "C:\Users\Jaime\Miniconda3\envs\mydjango\lib\smtplib.py", line 307, in _get_socketself.source_address)File "C:\Users\Jaime\Miniconda3\envs\mydjango\lib\socket.py", line 727, in create_connectionraise errFile "C:\Users\Jaime\Miniconda3\envs\mydjango\lib\socket.py", line 716, in create_connectionsock.connect(sa)ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it这是我尝试过的:1)import socketsocket.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 settingsfrom django.core.mail import EmailMessagesettings.configure()from django.core.mail import send_mailimport socketsocket.getaddrinfo('hotmail-com.olc.protection.outlook.com', 80)预期结果现在我想从 localhost Django 应用程序发送电子邮件。将来我会将代码上传到 pythonanywhere.com 服务器。
查看完整描述

2 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

[已修复] 这是我发送电子邮件的 Django 代码:

(大约 12 小时后...)




1) 我在 settings.py 中缺少配置

settings.py


DEFAULT_FROM_EMAIL = 'admin@********.com'

SERVER_EMAIL = 'admin@********.com'

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

EMAIL_USE_TLS = True

EMAIL_HOST = 'mail.********.com'

EMAIL_HOST_USER = 'admin@********.com'

EMAIL_HOST_PASSWORD = '*******'

EMAIL_PORT = 587



2) 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 EmailMessage


mail_subject = 'Active a sua conta.'

message = "message"

to_email = "jaimedcsilva@hotmail.com"


email = EmailMessage(

    mail_subject, message,to=[to_email]

)

email.send()




值得一提:

不适用于端口 465

电子邮件有时会进入垃圾文件夹




谢谢海梅


查看完整回答
反对 回复 2021-12-21
?
侃侃无极

TA贡献2051条经验 获得超10个赞

这些EMAIL_*值需要在您的设置模块中,而不是在您的脚本中。如果没有这些值,EmailBackend处理发送消息的类将默认尝试连接到localhost:25. 由于您没有在本地系统上运行 SMTP 服务器,因此它拒绝连接。

您不需要该EMAIL_BACKEND值,因为它是默认值,但将其他EMAIL_*值移动到您的设置模块中。


查看完整回答
反对 回复 2021-12-21
  • 2 回答
  • 0 关注
  • 230 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信