aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCatalin Marinas <catalin.marinas@gmail.com>2010-02-12 16:34:36 +0000
committerCatalin Marinas <catalin.marinas@gmail.com>2010-02-15 09:50:09 +0000
commit46e9c9f20e7410c6a8570dfd3dbbb20518dc6b56 (patch)
tree456a0e859826abe98a6eabf55d7618a74eb09f44
parentc391c4c17fb67567bad4a28f0010e59378426956 (diff)
downloadstgit-46e9c9f20e7410c6a8570dfd3dbbb20518dc6b56.tar.gz
mail: Ask for the SMTP credentials before sending the messages
The original implementation was asking for the SMTP password on every patch sent. This patch only asks the password once before sending or even editing the cover message and patches. Signed-off-by: Catalin Marinas <catalin.marinas@gmail.com> Cc: Pavel Roskin <proski@gnu.org> Cc: Alex Chiang <achiang@hp.com>
-rw-r--r--stgit/commands/mail.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/stgit/commands/mail.py b/stgit/commands/mail.py
index e1de847..d0334b4 100644
--- a/stgit/commands/mail.py
+++ b/stgit/commands/mail.py
@@ -192,9 +192,18 @@ def __send_message_sendmail(sendmail, msg):
cmd = sendmail.split()
Run(*cmd).raw_input(msg).discard_output()
-def __send_message_smtp(smtpserver, from_addr, to_addr_list, msg, options):
- """Send the message using the given SMTP server
+__smtp_credentials = None
+
+def __set_smtp_credentials(options):
+ """Set the (smtpuser, smtppassword, smtpusetls) credentials if the method
+ of sending is SMTP.
"""
+ global __smtp_credentials
+
+ smtpserver = options.smtp_server or config.get('stgit.smtpserver')
+ if options.mbox or options.git or smtpserver.startswith('/'):
+ return
+
smtppassword = options.smtp_password or config.get('stgit.smtppassword')
smtpuser = options.smtp_user or config.get('stgit.smtpuser')
smtpusetls = options.smtp_tls or config.get('stgit.smtptls') == 'yes'
@@ -206,6 +215,13 @@ def __send_message_smtp(smtpserver, from_addr, to_addr_list, msg, options):
if (smtpuser and not smtppassword):
smtppassword = getpass.getpass("Please enter SMTP password: ")
+ __smtp_credentials = (smtpuser, smtppassword, smtpusetls)
+
+def __send_message_smtp(smtpserver, from_addr, to_addr_list, msg, options):
+ """Send the message using the given SMTP server
+ """
+ smtpuser, smtppassword, smtpusetls = __smtp_credentials
+
try:
s = smtplib.SMTP(smtpserver)
except Exception, err:
@@ -650,6 +666,8 @@ def func(parser, options, args):
else:
ref_id = None
+ # get username/password if sending by SMTP
+ __set_smtp_credentials(options)
# send the cover message (if any)
if options.cover or options.edit_cover: