If the stgit.smtpserver configuration option does not have a host:port format, it is assumed to be an external tool. For example, to use sendmail just set this variable to "/usr/sbin/sendmail -t -i" (see the examples/gitconfig file). Signed-off-by: Catalin Marinas <catalin.marinas@xxxxxxxxx> --- examples/gitconfig | 1 + stgit/commands/mail.py | 29 ++++++++++++++++++++++++----- stgit/config.py | 4 ++-- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/examples/gitconfig b/examples/gitconfig index c16f786..28d94af 100644 --- a/examples/gitconfig +++ b/examples/gitconfig @@ -19,6 +19,7 @@ #autoresolved = no # SMTP server for sending patches + #smtpserver = /usr/sbin/sendmail -t -i #smtpserver = localhost:25 # Set to 'yes' to use SMTP over TLS diff --git a/stgit/commands/mail.py b/stgit/commands/mail.py index b4d4e18..67b94c1 100644 --- a/stgit/commands/mail.py +++ b/stgit/commands/mail.py @@ -24,6 +24,7 @@ from stgit.utils import * from stgit.out import * from stgit import stack, git, version, templates from stgit.config import config +from stgit.run import Run help = 'send a patch or series of patches by e-mail' @@ -184,8 +185,14 @@ def __parse_addresses(msg): return (from_addr_list[0], to_addr_list) -def __send_message(smtpserver, from_addr, to_addr_list, msg, sleep, - smtpuser, smtppassword, use_tls): +def __send_message_sendmail(sendmail, msg): + """Send the message using the sendmail command. + """ + cmd = sendmail.split() + Run(*cmd).raw_input(msg).discard_output() + +def __send_message_smtp(smtpserver, from_addr, to_addr_list, msg, + smtpuser, smtppassword, use_tls): """Send the message using the given SMTP server """ try: @@ -207,13 +214,25 @@ def __send_message(smtpserver, from_addr, to_addr_list, msg, sleep, result = s.sendmail(from_addr, to_addr_list, msg) if len(result): print "mail server refused delivery for the following recipients: %s" % result - # give recipients a chance of receiving patches in the correct order - time.sleep(sleep) except Exception, err: raise CmdException, str(err) s.quit() +def __send_message(smtpserver, from_addr, to_addr_list, msg, + sleep, smtpuser, smtppassword, use_tls): + """Message sending dispatcher. + """ + if smtpserver.startswith('/'): + # Use the sendmail tool + __send_message_sendmail(smtpserver, msg) + else: + # Use the SMTP server (we have host and port information) + __send_message_smtp(smtpserver, from_addr, to_addr_list, msg, + smtpuser, smtppassword, use_tls) + # give recipients a chance of receiving patches in the correct order + time.sleep(sleep) + def __build_address_headers(msg, options, extra_cc = []): """Build the address headers and check existing headers in the template. @@ -338,7 +357,7 @@ def __build_cover(tmpl, patches, msg_id, options): prefix_str = confprefix + ' ' else: prefix_str = '' - + total_nr_str = str(len(patches)) patch_nr_str = '0'.zfill(len(total_nr_str)) if len(patches) > 1: diff --git a/stgit/config.py b/stgit/config.py index 9bfdd52..fcf3a5d 100644 --- a/stgit/config.py +++ b/stgit/config.py @@ -29,7 +29,7 @@ class GitConfigException(StgException): class GitConfig: __defaults={ 'stgit.autoresolved': 'no', - 'stgit.smtpserver': 'localhost:25', + 'stgit.smtpserver': '/usr/sbin/sendmail -t -i', 'stgit.smtpdelay': '5', 'stgit.pullcmd': 'git pull', 'stgit.fetchcmd': 'git fetch', @@ -102,7 +102,7 @@ class GitConfig: if m: result.append(m.group(1)) return result - + config=GitConfig() def config_setup(): -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html