gpt4 book ai didi

python - 通过 Django 发送电子邮件 - WinError 10060 连接尝试失败和 GetAddrInfo 错误

转载 作者:行者123 更新时间:2023-12-04 20:28:55 26 4
gpt4 key购买 nike

我已经在 Windows R2 2012 上运行 Django 实例一年多了,但遇到了障碍。昨天出事了,不知道怎么回事。尽管在尝试发送电子邮件时,相同的两个错误会在不同的时间不断弹出:

[WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond





socket.gaierror: [Errno 11001] getaddrinfo failed



用户可以连接到服务器的 IP 地址和 Django 正在运行的端口 192.168.1.5:8000 ,但他们不能再发送电子邮件了。尽管按照 here 的描述确实有一个百分比通过,但很少。

我尝试过的事情

1) This solution
import socket
socket.getaddrinfo('localhost', 8000)

因为我在做 python manage.py runserver 192.168.1.5:8000 ,我添加了那个IP,什么也没有。

2) 我进入防火墙设置并确保端口都正常。在 setting.py 中声明的 SMTP我的 Django 项目中的文件和 25 个文件。所有这些文件,入站和出站。

3) 我尝试在我的本地机器上发送东西,它确实有效。我使用了其他不使用 Django 的程序来发送电子邮件,它们在除服务器之外的所有其他机器上进行处理。所以我知道这不是我的电子邮件服务器。

4) 我更改了电子邮件配置以使用我的 Gmail 帐户,并且它确实在除服务器之外的所有其他机器上处理。所以必须是环境。

5) 编辑 http_proxy环境变量

The problem, in my case, was that some install at some point defined an environment variable http_proxy on my machine when I had no proxy. Removing the http_proxy environment variable fixed the problem.



As described here

在我的 Django 项目中 wsgi.y文件:
os.environ['http_proxy'] = "http://192.168.1.5:8080"
os.environ['https_proxy'] = "http://192.168.1.5:8080"

6) 给出这个答案 here (有人可以解释一下我将如何处理 django 电子邮件功能),我也尝试过这种从解决方案中包装它的方法 here
import smtplib
import socks

#socks.setdefaultproxy(TYPE, ADDR, PORT)
socks.setdefaultproxy(socks.SOCKS5, '192.168.1.5', 8080)
socks.wrapmodule(smtplib)

smtpserver = 'smtp.live.com'
AUTHREQUIRED = 1
smtpuser = 'example@hotmail.fr'
smtppass = 'mypassword'

RECIPIENTS = 'mailto@gmail.com'
SENDER = 'example@hotmail.fr'
mssg = "test message"
s = mssg

server = smtplib.SMTP(smtpserver,587)
server.ehlo()
server.starttls()
server.ehlo()
server.login(smtpuser,smtppass)
server.set_debuglevel(1)
server.sendmail(SENDER, [RECIPIENTS], s)
server.quit()

虽然我不想使用这种方法,但我更喜欢使用 Django 的内置电子邮件服务。

最佳答案

由于您没有更改您共享的代码和错误,因此表明这是与网络相关的问题。

这很可能是DNS问题。在您的 settings.py您已指定 EMAIL_HOST ,我相信这是一个主机名。您需要检查服务器的 DNS 服务器。

您提到检查防火墙设置,但您做错的不是检查实际连接。
要解决此问题,您可以使用几个命令行实用程序,例如 telnetnslookup .您可以检查是否可以解析主机名:

nslookup smptp.mail_host.com

这个命令很可能会失败。

我想指出您在步骤中做错了什么:

1) 您试图获得您的服务 getaddrinfo您需要在其中放置 smtp 服务器主机名,这将导致相同的错误。套接字是应用层连接中非常原始的部分,您实际上不需要深入研究。

2) 检查防火墙设置就可以了。

3) 这是一个很好的步骤,表明您的服务器网络连接存在问题。

4) 这是另一个证据:)

5) 你错了,如果你的网络上有一个代理服务器来连接外部网络,那么你使用这个设置。但是你配置错了。您不应将项目 url 设置为代理服务器。

6) 这是另一个深层编码。你不应该使用这样的低级脚本,这会给你带来很多问题,这些问题本来可以在高级模块中处理。

关于python - 通过 Django 发送电子邮件 - WinError 10060 连接尝试失败和 GetAddrInfo 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51449038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com