Add authentication capability to the mail command. Added 'smtppassword'
and 'smtpuser' to config file and --smtp-user, --smtp-password to command
line.
Signed-off-by: Bryan Larsen <[EMAIL PROTECTED]>
---
stgit/commands/mail.py | 34 ++++++++++++++++++++++++++++++----
1 files changed, 30 insertions(+), 4 deletions(-)
diff --git a/stgit/commands/mail.py b/stgit/commands/mail.py
--- a/stgit/commands/mail.py
+++ b/stgit/commands/mail.py
@@ -41,7 +41,11 @@ options = [make_option('-a', '--all',
make_option('-s', '--sleep', type = 'int', metavar = 'SECONDS',
help = 'sleep for SECONDS between e-mails sending'),
make_option('--refid',
- help = 'Use REFID as the reference id')]
+ help = 'Use REFID as the reference id'),
+ make_option('-u', '--smtp-user', metavar = 'USER',
+ help = 'username for SMTP authentication'),
+ make_option('-p', '--smtp-password', metavar = 'PASSWORD',
+ help = 'username for SMTP authentication')]
def __parse_addresses(string):
@@ -65,7 +69,7 @@ def __parse_addresses(string):
return (from_addr_list[0], to_addr_list)
-def __send_message(smtpserver, from_addr, to_addr_list, msg, sleep):
+def __send_message(smtpserver, from_addr, to_addr_list, msg, sleep, smtpuser,
smtppassword):
"""Send the message using the given SMTP server
"""
if smtpserver.find(':')==-1:
@@ -80,6 +84,10 @@ def __send_message(smtpserver, from_addr
raise CmdException, str(err)
s.set_debuglevel(0)
+ if smtpuser and smtppassword:
+ s.ehlo()
+ s.login(smtpuser, smtppassword)
+
try:
s.sendmail(from_addr, to_addr_list, msg)
# give recipients a chance of receiving patches in the correct order
@@ -174,6 +182,13 @@ def func(parser, options, args):
raise CmdException, 'smtpserver not defined'
smtpserver = config.get('stgit', 'smtpserver')
+ smtpuser = None
+ smtppassword = None
+ if config.has_option('stgit', 'smtpuser'):
+ smtpuser = config.get('stgit', 'smtpuser')
+ if config.has_option('stgit', 'smtppassword'):
+ smtppassword = config.get('stgit', 'smtppassword')
+
applied = crt_series.get_applied()
if len(args) == 1:
@@ -216,6 +231,17 @@ def func(parser, options, args):
else:
raise CmdException, 'Incorrect options. Unknown patches to send'
+ if options.smtp_password:
+ smtppassword = options.smtp_password
+
+ if options.smtp_user:
+ smtpuser = options.smtp_user
+
+ if (smtppassword and not smtpuser):
+ raise CmdException, 'SMTP password supplied, username needed'
+ if (smtpuser and not smtppassword):
+ raise CmdException, 'SMTP username supplied, password needed'
+
total_nr = len(patches)
if total_nr == 0:
raise CmdException, 'No patches to send'
@@ -241,7 +267,7 @@ def func(parser, options, args):
print 'Sending file "%s"...' % options.first,
sys.stdout.flush()
- __send_message(smtpserver, from_addr, to_addr_list, msg, sleep)
+ __send_message(smtpserver, from_addr, to_addr_list, msg, sleep,
smtpuser, smtppassword)
print 'done'
@@ -264,6 +290,6 @@ def func(parser, options, args):
print 'Sending patch "%s"...' % p,
sys.stdout.flush()
- __send_message(smtpserver, from_addr, to_addr_list, msg, sleep)
+ __send_message(smtpserver, from_addr, to_addr_list, msg, sleep,
smtpuser, smtppassword)
print 'done'
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html