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电子邮件。任何帮助将不胜感激,谢谢。
答案 0 :(得分:2)
您对smtplib.SMTP()
的来电使用无效参数。根据smtplib文档:
SMTP([host [,port [,local_hostname [, 超时]]]])
因此,SMTP
构造函数接受主机名,端口等的可选参数。但是您已将端口和主机名作为一个参数传递(server = smtplib.SMTP('smtp.live.com:25')
)。
如果您将其他内容更改为正确,则将该行更改为server = smtplib.SMTP('smtp.live.com', 25)
。
如果您的服务器需要身份验证(我怀疑它确实如此),在您实际发送电子邮件之前,您需要致电server.login(user, password)
进行登录,以便实际发送邮件。