Home | Trees | Indices | Help |
---|
|
1 # -*- coding: utf-8 -*- 2 # 3 # Copyright 2004-2006 André Malo or his licensors, as applicable 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 """ 17 Text based email notifiers (either piped to a program or via SMTP) 18 """ 19 __author__ = "André Malo" 20 __docformat__ = "epytext en" 21 __all__ = ['getNotifier'] 22 2325 """ Returns an initialized notifier or nothing 26 27 @param config: The svnmailer config 28 @type config: C{svnmailer.settings.Settings} 29 30 @param groupset: The groupset to process 31 @type groupset: C{list} 32 33 @return: The list of notifiers (containing 0 or 1 member) 34 @rtype: C{list} 35 """ 36 from svnmailer import settings 37 from svnmailer.notifier import _textmail, _multimail 38 39 cls = None 40 if config.general.sendmail_command: 41 cls = SendmailSubmitter 42 elif config.general.smtp_host: 43 cls = SMTPSubmitter 44 45 if cls: 46 mtype = (groupset.groups[0].mail_type or u'single').split()[0].lower() 47 is_commit = (config.runtime.mode == settings.modes.commit) 48 mod = (is_commit and mtype == u'multipart') and \ 49 _multimail or _textmail 50 return mod.getNotifier(cls, config, groupset) 51 52 return []53 5456 """ Use SMTP to submit the mail """ 57 _settings = None 5875 7660 """ Sends the mail via SMTP """ 61 import smtplib, cStringIO 62 63 fp = cStringIO.StringIO() 64 mail.dump(fp) 65 mail = fp.getvalue() 66 fp.close() 67 68 general = self._settings.general 69 conn = smtplib.SMTP(general.smtp_host) 70 if general.smtp_user: 71 conn.login(general.smtp_user, general.smtp_pass) 72 73 conn.sendmail(sender, to_addr, mail) 74 conn.quit()78 """ Pipe all stuff to a mailer """ 79 _settings = None 8011782 """ Sends the mail via a piped mailer """ 83 from svnmailer import util 84 85 pipe = util.getPipe2(self._getMailCommand(sender, to_addr)) 86 pipe.fromchild.close() # we don't expect something 87 mail.dump(pipe.tochild) 88 pipe.tochild.close() 89 90 # what do we do with the return code? 91 pipe.wait()92 9395 """ Returns the mailer command 96 97 The command is created using sendmail conventions. 98 If you want another commandline, override this method. 99 100 @param sender: The sender address 101 @type sender: C{str} 102 103 @param to_addr: The receivers 104 @type to_addr: C{list} 105 106 @return: The command 107 @rtype: C{list} 108 """ 109 cmd = list(self._settings.general.sendmail_command) 110 cmd[1:] = [(isinstance(arg, unicode) and 111 [arg.encode("utf-8")] or [arg])[0] for arg in cmd[1:] 112 ] 113 cmd.extend(['-f', sender]) 114 cmd.extend(to_addr) 115 116 return cmd
Home | Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 on Sun Sep 25 21:07:33 2011 | http://epydoc.sourceforge.net |