发送邮件时出错

时间:2014-05-22 09:20:41

标签: python email send

我尝试通过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发送邮件....同样的问题...

请帮忙

3 个答案:

答案 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']