python - 如何解决python-smtplib的 "socket.gaierror"错误?

标签 python sockets python-sockets

几个小时前,我发布了一篇与“Django 电子邮件发送 API”及其错误相关的帖子。所以我想首先我应该尝试使用“smtplib”。不幸的是,在与“smtplib”斗争之后,我意识到它也不会工作,因为我的代码或我的网络或我的机器出了点问题,我无法弄清楚。

任何人都可以帮助我解决这个问题吗?

截至目前,在经过一番努力之后,我已经尝试了数百种解决方案,我也尝试过自己解决,但在我的案例中没有任何效果,请帮助。

代码如下。

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText

import socks



socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS4, "172.16.0.2", '8084')
socks.wrapmodule(smtplib)

#smtp = smtplib.SMTP()

msg = MIMEMultipart()
msg['From'] = 'my@yahoo.com'
msg['To'] = 'example@gmail.com'
msg['Subject'] = 'simple email in python'
message = 'here is the email'
msg.attach(MIMEText(message))

mailserver = smtplib.SMTP('smtp.mail.yahoo.com',465)
# identify ourselves to smtp gmail client
mailserver.ehlo()
# secure our email with tls encryption
mailserver.starttls()
# re-identify ourselves as an encrypted connection
mailserver.ehlo()
mailserver.login('my@yahoo.com', 'pswd12345678')

mailserver.sendmail('my@yahoo.com','example@gmail.com',msg.as_string())

mailserver.quit()

这是一次又一次出现的错误:

Traceback (most recent call last):
  File "import_mail.py", line 21, in <module>
    mailserver = smtplib.SMTP('smtp.mail.yahoo.com',465)
  File "/usr/lib/python2.7/smtplib.py", line 256, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python2.7/smtplib.py", line 316, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python2.7/smtplib.py", line 291, in _get_socket
    return socket.create_connection((host, port), timeout)
  File "/usr/lib/python2.7/socket.py", line 557, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno -3] Temporary failure in name resolution

最佳答案

此错误是由于设置文件中缺少“EMAIL_BACKEND”定义而引发的。确保 settings.py 文件包含以下行:-

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

如果您使用 gmail 帐户设置默认交互式邮件,请使用以下值:-

  EMAIL_HOST = 'smtp.gmail.com'
  EMAIL_PORT = 587 #PORT NO
  EMAIL_HOST_USER = #e-MAIL ID
  EMAIL_HOST_PASSWORD = #PASSWORD

关于python - 如何解决python-smtplib的 "socket.gaierror"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44699502/

相关文章:

Python:列表中的空格(带 0 的空格)

c - 如何管理大量socket

python - 使用python中的套接字编程将视频流从服务器发送到客户端

python - Pandas:将多索引 JSON 作为 Pandas 数据帧读取

Python-替换列表中的项目仅替换第一个实例,而不是所有实例

c# - 来自 Socket 的 UWP SendToAsync 导致 AddressFamilyNotSupported

python - 是什么导致该套接字运行速度非常慢?

python - 使用 Python 在 LAN 上查找事件节点

python - julia 是否有与 numpy.loadtxt 等效(或接近)的等效项?

客户端通过套接字与服务器进行通信