Module: check_mk
Branch: master
Commit: 1d9ef330d4cf105f843951dd97f2f1691e34b197
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=1d9ef330d4cf10…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Tue Mar 7 07:57:39 2017 +0100
asciimail: Slightly improved error handling
Change-Id: I840a8ef7845d035b774acadd97931a0cfc6551e3
---
notifications/asciimail | 21 ++++++++++++++++++---
notifications/mail | 2 ++
2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/notifications/asciimail b/notifications/asciimail
index 7948251..618d0af 100755
--- a/notifications/asciimail
+++ b/notifications/asciimail
@@ -92,8 +92,17 @@ def send_mail(m, target, from_address):
if from_address:
cmd += ['-F', from_address, "-f", from_address]
cmd += [ "-i", target.encode("utf-8")]
- p = subprocess.Popen(cmd, stdin = subprocess.PIPE)
+
+ try:
+ p = subprocess.Popen(cmd, stdin=subprocess.PIPE)
+ except OSError:
+ raise Exception("Failed to send the mail: /usr/sbin/sendmail is
missing")
+
p.communicate(m.as_string())
+ if p.returncode != 0:
+ raise Exception("sendmail returned with exit code: %d" % p.returncode)
+
+ return 0
def construct_content(context):
@@ -238,13 +247,19 @@ def main():
subject = context['SUBJECT']
if not mailto: # e.g. empty field in user database
- sys.stdout.write("Cannot send HTML email: empty destination email
address")
+ sys.stdout.write("Cannot send ASCII email: empty destination email
address\n")
sys.exit(2)
# Create the mail and send it
from_address = context.get("PARAMETER_FROM")
reply_to = context.get("PARAMETER_REPLY_TO")
m = build_mail(mailto, subject, from_address, reply_to, content_txt)
- send_mail(m, mailto, from_address)
+
+ try:
+ sys.exit(send_mail(m, mailto, from_address))
+ except Exception, e:
+ sys.stderr.write("Unhandled exception: %s\n" % e)
+ # unhandled exception, don't retry this...
+ sys.exit(2)
main()
diff --git a/notifications/mail b/notifications/mail
index a47de6d..4d2f3b8 100755
--- a/notifications/mail
+++ b/notifications/mail
@@ -435,6 +435,7 @@ def send_mail_sendmail(m, target, from_address):
if from_address:
cmd += ['-F', from_address, "-f", from_address]
cmd += [ "-i", target.encode("utf-8")]
+
try:
p = subprocess.Popen(cmd, stdin=subprocess.PIPE)
except OSError:
@@ -926,6 +927,7 @@ def main():
from_address = context.get("PARAMETER_FROM") or default_from_address()
reply_to = context.get("PARAMETER_REPLY_TO")
m = multipart_mail(mailto, subject, from_address, reply_to, content_txt,
content_html, attachments)
+
try:
sys.exit(send_mail(m, mailto, from_address, context))
except Exception, e: