使用SMTP库通过Python发送电子邮件
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)
来登录,这样才能发送消息。