使用SMTP库通过Python发送电子邮件

1 投票
1 回答
1414 浏览
提问于 2025-04-16 06:35
import smtplib

def prompt(prompt):
    return raw_input(prompt).strip()

fromaddr = prompt("From: ")
toaddrs  = prompt("To: ").split()
print "Enter message, end with ^D (Unix) or ^Z (Windows):"


msg = ("From: %s\r\nTo: %s\r\n\r\n"
       % (fromaddr, ", ".join(toaddrs)))
while 1:
    try:
        line = raw_input()
    except EOFError:
        break
    if not line:
       break
    msg = msg + line

    print "Message length is " + repr(len(msg))

server = smtplib.SMTP('smtp.live.com:25')
server.set_debuglevel(1)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()

我正在尝试用那个例子发送电子邮件,但它不工作。我没有收到任何错误提示,就是不发送任何东西。我想把邮件发送到一个hotmail邮箱。任何帮助都将不胜感激,谢谢。

1 个回答

2

你调用的 smtplib.SMTP() 方法使用了不正确的参数。根据smtplib的文档:

SMTP([主机名[, 端口[, 本地主机名[, 超时]]]])

所以,SMTP 这个构造函数可以接受主机名、端口等可选参数。但是你把端口和主机名合在一起作为一个参数传了进去(server = smtplib.SMTP('smtp.live.com:25'))。

只要其他地方没问题,你只需要把那一行改成 server = smtplib.SMTP('smtp.live.com', 25) 就可以了。

如果你的服务器需要登录(我猜是需要的),在你真正发送邮件之前,你需要调用 server.login(user, password) 来登录,这样才能发送消息。

撰写回答