用Python连接SMTP服务器时出错

3 投票
4 回答
4562 浏览
提问于 2025-04-16 00:37

导入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只是个占位符,如果是这样的话,记得把它换成真实的邮件服务器名称。

0

你的 my.smtp.server.comdns 或者 /etc/hosts 里没有对应的ip地址吗?

-> DNS 维基百科

my.smtp.server.com 是一个真实的 (smtp) 服务器吗?

你试过用 telnet 连接 my.smtp.server.com 的 25 端口吗?

有没有防火墙的问题?

如果你需要一个测试服务器 -> lamson

撰写回答