aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/tools/mail.py
diff options
context:
space:
mode:
authorJonathan Sandoval <jsandoval@utp.edu.co>2016-04-08 13:12:21 -0500
committerJonathan Sandoval <jsandoval@utp.edu.co>2016-04-08 13:12:21 -0500
commitd4eadc946190b40a7244320ba46e0fd2370e4009 (patch)
treecdcab5209e9151f43192aae5301340093c99a260 /mediagoblin/tools/mail.py
parent9d37bcd06fae5e8cbebf68aaf8670551fe6e5db1 (diff)
downloadmediagoblin-d4eadc946190b40a7244320ba46e0fd2370e4009.tar.lz
mediagoblin-d4eadc946190b40a7244320ba46e0fd2370e4009.tar.xz
mediagoblin-d4eadc946190b40a7244320ba46e0fd2370e4009.zip
Custom exception in mail.
Diffstat (limited to 'mediagoblin/tools/mail.py')
-rw-r--r--mediagoblin/tools/mail.py32
1 files changed, 28 insertions, 4 deletions
diff --git a/mediagoblin/tools/mail.py b/mediagoblin/tools/mail.py
index c11e392b..8161a324 100644
--- a/mediagoblin/tools/mail.py
+++ b/mediagoblin/tools/mail.py
@@ -16,6 +16,8 @@
from __future__ import print_function, unicode_literals
+import socket
+import logging
import six
import smtplib
import sys
@@ -54,6 +56,14 @@ EMAIL_TEST_INBOX = []
EMAIL_TEST_MBOX_INBOX = []
+class MailError(Exception):
+ """ General exception for mail errors """
+
+
+class NoSMTPServerError(MailError):
+ pass
+
+
class FakeMhost(object):
"""
Just a fake mail host so we can capture and test messages
@@ -101,13 +111,27 @@ def send_email(from_addr, to_addrs, subject, message_body):
else:
smtp_init = smtplib.SMTP
- mhost = smtp_init(
- mg_globals.app_config['email_smtp_host'],
- mg_globals.app_config['email_smtp_port'])
+ try:
+ mhost = smtp_init(
+ mg_globals.app_config['email_smtp_host'],
+ mg_globals.app_config['email_smtp_port'])
+ except socket.error:
+ error_message = "Couldn't contact mail server on <{}>:<{}>".format(
+ mg_globals.app_config['email_smtp_host'],
+ mg_globals.app_config['email_smtp_port'])
+ logging.debug(error_message)
+ raise NoSMTPServerError(error_message)
# SMTP.__init__ Issues SMTP.connect implicitly if host
if not mg_globals.app_config['email_smtp_host']: # e.g. host = ''
- mhost.connect() # We SMTP.connect explicitly
+ try:
+ mhost.connect() # We SMTP.connect explicitly
+ except socket.error:
+ error_message = "Couldn't contact mail server on <{}>:<{}>".format(
+ mg_globals.app_config['email_smtp_host'],
+ mg_globals.app_config['email_smtp_port'])
+ logging.debug(error_message)
+ raise NoSMTPServerError(error_message)
try:
mhost.starttls()