Python 2.7测试是否发送了SMTP邮件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 2.7测试是否发送了SMTP邮件相关的知识,希望对你有一定的参考价值。
我正在尝试使用SMTP库执行完全自动化的Raspberry Pi,以发送带有特定地址附件的电子邮件。但我实际上并不知道如何测试电子邮件是否成功发送。如果由于某种原因无法发送,就像没有互联网连接一样,它应该在几分钟后再试一次。
我使用Raspberry Model 3和Raspian GNU / Linux 8
我发现有些东西说这会起作用:
[..]
try:
smtpserver.sendmail(sender, [receiver], msg.as_string())
smtpserver.quit()
except smtplib.SMTPConnectionError:
print(_logger.exception('SMTP Connection failed to %s on %s' % (host, port)))
我知道它不会起作用,因为它只是一个打印命令但我试过它只是为了安全。我得到了这个错误代码:
Traceback (most recent call last):
File "**Path + Filename**", line 43, in <module>
smtpserver = smtplib.SMTP('***', ***)
File "/usr/lib/python2.7/smtplib.py", line 256, in __init__
(code, msg) = self.connect(host, port)
File "/usr/lib/python2.7/smtplib.py", line 316, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/lib/python2.7/smtplib.py", line 291, in _get_socket
return socket.create_connection((host, port), timeout)
File "/usr/lib/python2.7/socket.py", line 553, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
gaierror: [Errno -2] Name or service not known
如何测试是否已建立连接并且邮件已发送?
ps:我的英语不完美,但我希望这是可以理解的
答案
你只有smtplib.SMTPConnectionError
,你的帖子追溯是其他例外(所以你的电子邮件不发送):
您可以除了所有其他异常,然后在那里调试:
[..]
try:
smtpserver.sendmail(sender, [receiver], msg.as_string())
smtpserver.quit()
except smtplib.SMTPConnectionError:
print(_logger.exception('SMTP Connection failed to %s on %s' % (host, port)))
except Exception as e:
print(e)
以上是关于Python 2.7测试是否发送了SMTP邮件的主要内容,如果未能解决你的问题,请参考以下文章