我尝试通过python发送邮件。我有一个功能:
def mail():
fromaddr = 'mymail@gmail.com'
toaddrs = 'targetmail@o2.pl'
msg = 'There was a terrible error that occured and I wanted you to know!'
# Credentials (if needed)
username = 'mymail@gmail.com'
password = 'password'
# The actual mail send
server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()
server.ehlo()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
当我尝试执行此功能时,它会让我看到WinError 10060.下面的错误文本:
Traceback (most recent call last):
File "C:\python-factory\ServiceChecker\main\mainBlock.py", line 75, in <module> mail()
File "C:\python-factory\ServiceChecker\main\mainBlock.py", line 65, in mail server = smtplib.SMTP('smtp.gmail.com:587')
File "C:\Python34\Lib\smtplib.py", line 242, in __init__ (code, msg) = self.connect(host, port)
File "C:\Python34\Lib\smtplib.py", line 321, in connect self.sock = self._get_socket(host, port, self.timeout)
File "C:\Python34\Lib\smtplib.py", line 292, in _get_socket self.source_address)
File "C:\Python34\Lib\socket.py", line 509, in create_connection raise err
File "C:\Python34\Lib\socket.py", line 500, in create_connection sock.connect(sa)
TimeoutError: [WinError 10060]
我不知道问题出在哪里...我尝试了很多邮件服务器(gmail,o2,wp),所有邮件服务器都返回了同样的错误。我在互联网上尝试了其他可用的解决方案,通过pyython发送邮件....同样的问题...
请帮忙
答案 0 :(得分:1)
根据您发布的回溯信息,您在
行中失败了server = smtplib.SMTP('smtp.gmail.com:587')
我已经跑了这条线,它对我有用。线索在TimeoutError
。我相信你有网络问题而代码本身也很好。
你有一个额外的电话ehlo
,但就目前而言,你没有那么远。
此外,将端口号作为单独的参数传递可能会更好,而不是使用冒号来分割它。 E.g。
server = smtplib.SMTP(host='smtp.gmail.com', port=587)
smptlib的文档位于:https://docs.python.org/2/library/smtplib.html
答案 1 :(得分:0)
尝试删除第二个server.ehlo()。登录前的那个。这对我有用。
答案 2 :(得分:0)
toaddrs
应该是一个列表
toaddrs = ['targetmail@o2.pl']