Merge "Make SMTP connection configurable"
diff --git a/jeepyb/cmd/notify_impact.py b/jeepyb/cmd/notify_impact.py
index 9c505a3..db0d859 100644
--- a/jeepyb/cmd/notify_impact.py
+++ b/jeepyb/cmd/notify_impact.py
@@ -170,6 +170,28 @@
     return buglink
 
 
+def smtp_connection(args):
+    """Create SMTP connection based on command line arguments, falling
+    back to sensible defaults if no arguments are provided.
+    """
+    conn = None
+    if args.smtp_ssl:
+        port = 465 if not args.smtp_port else args.smtp_port
+        conn = smtplib.SMTP_SSL(args.smtp_host, port)
+    else:
+        port = 25 if not args.smtp_port else args.smtp_port
+        conn = smtplib.SMTP(args.smtp_host, port)
+
+    if args.smtp_starttls:
+        conn.starttls()
+        conn.ehlo()
+
+    if args.smtp_user and args.smtp_pass:
+        conn.login(args.smtp_user, args.smtp_pass)
+
+    return conn
+
+
 def process_impact(git_log, args, config):
     """Process DocImpact flag.
 
@@ -190,12 +212,11 @@
     msg = text.MIMEText(email_content)
     msg['Subject'] = '[%s] %s review request change %s' % \
         (args.project, args.impact, args.change)
-    msg['From'] = 'gerrit2@review.openstack.org'
+    msg['From'] = args.smtp_from
     msg['To'] = args.dest_address
 
-    s = smtplib.SMTP('localhost')
-    s.sendmail('gerrit2@review.openstack.org',
-               args.dest_address, msg.as_string())
+    s = smtp_connection(args)
+    s.sendmail(args.smtp_from, args.dest_address, msg.as_string())
     s.quit()
 
 
@@ -248,6 +269,22 @@
     parser.add_argument('--no-dryrun', dest='dryrun', action='store_false')
     parser.set_defaults(dryrun=False)
 
+    # SMTP configuration
+    parser.add_argument('--smtp-from', dest='smtp_from',
+                        default='gerrit2@review.openstack.org')
+
+    parser.add_argument('--smtp-host', dest='smtp_host', default="localhost")
+    parser.add_argument('--smtp-port', dest='smtp_port')
+
+    parser.add_argument('--smtp-ssl', dest='smtp_ssl', action='store_true')
+    parser.add_argument('--smtp-starttls', dest='smtp_starttls',
+                        action='store_true')
+
+    parser.add_argument('--smtp-user', dest='smtp_user',
+                        default=os.getenv('SMTP_USER'))
+    parser.add_argument('--smtp-pass', dest='smtp_pass',
+                        default=os.getenv('SMTP_PASS'))
+
     args = parser.parse_args()
 
     # NOTE(mikal): the basic idea here is to let people watch