用Python连接SMTP服务器时出错
导入smtplib这个库
服务器地址是 "my.smtp.server.com"
发件人邮箱是 "myemail@somehost.ca"
收件人邮箱是一个列表,里面有 "someemail@somehost.mun.ca"
邮件主题是 "Hello!"
邮件内容是 "hello"
这是我的代码:
# Prepare actual message
message = """\
From: %s
To: %s
Subject: %s
%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)
# Send the mail
server = smtplib.SMTP(SERVER)
server.login('loginname','password')
这是我遇到的错误:
Traceback (most recent call last):
File "C:\Documents and Settings\Desktop\New Text Document.py", line 24, in ?
server = smtplib.SMTP(SERVER)
File "C:\Python24\lib\smtplib.py", line 241, in __init__
(code, msg) = self.connect(host, port)
File "C:\Python24\lib\smtplib.py", line 289, in connect
for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM):
gaierror: (11001, 'getaddrinfo failed')
接下来我该怎么做?
4 个回答
0
首先,把调试级别设置为真,这样可以帮助你查看详细信息,代码是:
server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT) server.set_debuglevel(1)
接下来,检查一下服务器是否在使用SSL协议或者TLS协议。如果是SSL的话,你需要调用这个函数(如果你在用SES,这就是你应该调用的函数):
server = smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT)
如果SMTP服务器使用的是TLS协议,那么你需要用下面的函数来启动TLS:
server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT) server.ehlo() server.starttls()
0
可能你的DNS有问题。也许my.smtp.server.com只是个占位符,如果是这样的话,记得把它换成真实的邮件服务器名称。