Python发送电子邮件时,始终在子句中禁止:smtpserver = smtplib.SMTP(“smtp.gmail.com”,587)应该怎么解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (370)

正在编写一个Python程序来发送电子邮件。但每次执行该条款时:

smtpserver = smtplib.SMTP("smtp.gmail.com",587)

它会在这里阻塞并始终保持执行状态,没有任何提示和错误。可以帮助我吗?

代码如下:import smtplib

to = 'toemail@gmail.com'
gmail_user = 'user@gmail.com'
gmail_pwd = 'password'
smtpserver = smtplib.SMTP("smtp.gmail.com",587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo
smtpserver.login(gmail_user, gmail_pwd)
header = 'To:' + to + '\n' + 'From: ' + gmail_user + '\n' + 'Subject:testing \n'
print header
msg = header + '\n this is test msg from mkyong.com \n\n'
smtpserver.sendmail(gmail_user, to, msg)
print 'done!'
smtpserver.close()
提问于
用户回答回答于

可能是您的代理或防火墙阻止了?并且超时可能会非常大,以至于看不到它进一步发展。

文档smtplib.SMTP说:

class smtplib.SMTP([host[, port[, local_hostname[, timeout]]]]) (...)SMTPConnectError如果指定的内容host没有正确响应,则会引发An 。可选timeout参数指定阻止像连接尝试(如果未指定,将使用全局默认超时设置)等操作的超时(以秒为单位)。

尝试自己指定超时时间:

smtpserver = smtplib.SMTP("smtp.gmail.com", 587, timeout=30)
用户回答回答于
server = smtplib.SMTP("smtp.gmail.com", 587, None, 30)

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励