##// END OF EJS Templates
use untrusted settings in hgweb...
use untrusted settings in hgweb The only exceptions are web.static and web.templates, since they can be used to get any file that is readable by the user running the CGI script. Other options can be (ab)used to increase the use of the cpu (allow_bz2) or of the bandwidth (server.uncompressed), but they're trusted anyway.

File last commit:

r2964:26c8d374 default
r3555:88106400 default
Show More
mail.py
68 lines | 2.2 KiB | text/x-python | PythonLexer
Matt Mackall
Move ui.sendmail to mail.connect/sendmail
r2889 # mail.py - mail sending bits for mercurial
#
# Copyright 2006 Matt Mackall <mpm@selenic.com>
#
# This software may be used and distributed according to the terms
# of the GNU General Public License, incorporated herein by reference.
from i18n import gettext as _
from demandload import *
demandload(globals(), "os re smtplib templater util")
def _smtp(ui):
'''send mail using smtp.'''
local_hostname = ui.config('smtp', 'local_hostname')
s = smtplib.SMTP(local_hostname=local_hostname)
mailhost = ui.config('smtp', 'host')
if not mailhost:
raise util.Abort(_('no [smtp]host in hgrc - cannot send mail'))
mailport = int(ui.config('smtp', 'port', 25))
Alexis S. L. Carvalho
fix typo in mail.py
r2964 ui.note(_('sending mail: smtp host %s, port %s\n') %
(mailhost, mailport))
Matt Mackall
Move ui.sendmail to mail.connect/sendmail
r2889 s.connect(host=mailhost, port=mailport)
if ui.configbool('smtp', 'tls'):
ui.note(_('(using tls)\n'))
s.ehlo()
s.starttls()
s.ehlo()
username = ui.config('smtp', 'username')
password = ui.config('smtp', 'password')
if username and password:
ui.note(_('(authenticating to mail server as %s)\n') %
(username))
s.login(username, password)
return s
class _sendmail(object):
'''send mail using sendmail.'''
def __init__(self, ui, program):
self.ui = ui
self.program = program
def sendmail(self, sender, recipients, msg):
cmdline = '%s -f %s %s' % (
self.program, templater.email(sender),
' '.join(map(templater.email, recipients)))
self.ui.note(_('sending mail: %s\n') % cmdline)
fp = os.popen(cmdline, 'w')
fp.write(msg)
ret = fp.close()
if ret:
raise util.Abort('%s %s' % (
os.path.basename(self.program.split(None, 1)[0]),
util.explain_exit(ret)[0]))
def connect(ui):
'''make a mail connection. object returned has one method, sendmail.
call as sendmail(sender, list-of-recipients, msg).'''
method = ui.config('email', 'method', 'smtp')
if method == 'smtp':
Brendan Cully
mail: fix connect
r2929 return _smtp(ui)
Matt Mackall
Move ui.sendmail to mail.connect/sendmail
r2889
Brendan Cully
mail: fix connect
r2929 return _sendmail(ui, method)
Matt Mackall
Move ui.sendmail to mail.connect/sendmail
r2889
def sendmail(ui, sender, recipients, msg):
return connect(ui).sendmail(sender, recipients, msg)