Python 2.7测试是否发送了SMPT邮件

时间:2017-12-28 01:43:20

标签: python email smtp smtplib

我尝试使用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:我的英语不完美,但我希望这是可以理解的

1 个答案:

答案 0 :(得分:0)

除了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)