如何修复 ConnectionRefusedError: [WinError 10061] 目标机器主动拒绝呢?(Django 电子邮件)

Jai*_*130 5 python sockets email django

我正在使用 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
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

1.导入socket socket.getaddrinfo('hotmail-com.olc.protection.outlook.com', 80) socket.getaddrinfo('smtp.hotmail.com', 8000) socket.getaddrinfo('smtp.hotmail.com',第587章)

  1. 关闭防火墙/防病毒软件
  2. 在 python shell 和 Django 应用程序中运行代码
  3. 我已经从 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)

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'hotmail-com.olc.protection.outlook.com'
EMAIL_HOST_USER = '*******@hotmail.com'
EMAIL_HOST_PASSWORD = '******'
EMAIL_PORT = 587

mail_subject = 'Activate your blog account.'
            

to_email = "******@hotmail"
email = EmailMessage(
    mail_subject, "hello", to=[to_email]
)
email.send()
Run Code Online (Sandbox Code Playgroud)

预期结果:

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

Nat*_*eks 0

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

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