def testRefusingMailerDiesInVote(self): from zope.sendmail.delivery import DirectMailDelivery mailer = RefusingMailerStub() delivery = DirectMailDelivery(mailer) fromaddr = 'Jim <*****@*****.**' toaddrs = ('Guido <*****@*****.**>', 'Steve <steve@examplecom>') opt_headers = ('From: Jim <*****@*****.**>\n' 'To: some-zope-coders:;\n' 'Date: Mon, 19 May 2003 10:17:36 -0400\n' 'Message-Id: <*****@*****.**>\n') message = ('Subject: example\n' '\n' 'This is just an example\n') msgid = delivery.send(fromaddr, toaddrs, opt_headers + message) try: try: transaction.commit() except: if transaction.get()._voted: # We voted for commit then failed, reraise raise else: # We vetoed a commit, that's good. pass else: self.fail("Did not raise an exception in vote") finally: # Clean up after ourselves transaction.abort()
def send(self, message, fromaddr, toaddrs, subject=None, encode=None): """ Send out a mail. 'subject' and 'encode' are unused (and kept right now for backward compatibility. """ delivery = DirectMailDelivery(self._getMailer()) delivery.send(fromaddr, toaddrs, message) LOG.debug('Sending mail from %s to %s succeeded' % (fromaddr, toaddrs))
def send(self, message, fromaddr, toaddrs, subject=None, encode=None): """ Send out an email. 'subject' and 'encode' are unused (and kept right now for backward compatibility. 'message' should be a properly formatted RFC-822 compliant email message (e.g. as produced by Python's email module. """ delivery = DirectMailDelivery(self._getMailer()) delivery.send(fromaddr, toaddrs, message) LOG.debug('Sending mail from %s to %s succeeded' % (fromaddr, toaddrs))
def testInterface(self): from zope.sendmail.interfaces import IDirectMailDelivery from zope.sendmail.delivery import DirectMailDelivery mailer = MailerStub() delivery = DirectMailDelivery(mailer) verifyObject(IDirectMailDelivery, delivery) self.assertEqual(delivery.mailer, mailer)
def test_old_mailer_without_vote(self): import warnings class OldMailer(object): def send(self): raise NotImplementedError() abort = send delivery = DirectMailDelivery(OldMailer()) with warnings.catch_warnings(record=True) as w: warnings.simplefilter('always') mdm = delivery.createDataManager("from", (), "msg") mdm.tpc_vote(None) self.assertEqual(1, len(w)) self.assertIn("does not provide a vote method", str(w[0]))
def createDirectDelivery(): mailerObject = queryUtility(IMailer, mailer) if mailerObject is None: raise ConfigurationError("Mailer %r is not defined" % mailer) delivery = DirectMailDelivery(mailerObject) if permission is not None: delivery = _assertPermission(permission, IMailDelivery, delivery) handler('registerUtility', delivery, IMailDelivery, name)
def testBrokenMailerErrorsAreEaten(self): from zope.testing.loggingsupport import InstalledHandler mailer = BrokenMailerStub() delivery = DirectMailDelivery(mailer) fromaddr = 'Jim <*****@*****.**' toaddrs = ('Guido <*****@*****.**>', 'Steve <steve@examplecom>') opt_headers = ('From: Jim <*****@*****.**>\n' 'To: some-zope-coders:;\n' 'Date: Mon, 19 May 2003 10:17:36 -0400\n' 'Message-Id: <*****@*****.**>\n') message = ('Subject: example\n' '\n' 'This is just an example\n') delivery.send(fromaddr, toaddrs, opt_headers + message) log_handler = InstalledHandler('MailDataManager') self.addCleanup(log_handler.uninstall) self.addCleanup(transaction.abort) transaction.commit()
def testRefusingMailerDiesInVote(self): mailer = RefusingMailerStub() delivery = DirectMailDelivery(mailer) fromaddr = 'Jim <*****@*****.**' toaddrs = ('Guido <*****@*****.**>', 'Steve <steve@examplecom>') opt_headers = ('From: Jim <*****@*****.**>\n' 'To: some-zope-coders:;\n' 'Date: Mon, 19 May 2003 10:17:36 -0400\n' 'Message-Id: <*****@*****.**>\n') message = ('Subject: example\n' '\n' 'This is just an example\n') delivery.send(fromaddr, toaddrs, opt_headers + message) self.addCleanup(transaction.abort) with self.assertRaises(Exception): transaction.commit() self.assertFalse(transaction.get()._voted, "We voted for commit then failed, reraise")
def testBrokenMailerErrorsAreEaten(self): from zope.sendmail.delivery import DirectMailDelivery mailer = BrokenMailerStub() delivery = DirectMailDelivery(mailer) fromaddr = 'Jim <*****@*****.**' toaddrs = ('Guido <*****@*****.**>', 'Steve <steve@examplecom>') opt_headers = ('From: Jim <*****@*****.**>\n' 'To: some-zope-coders:;\n' 'Date: Mon, 19 May 2003 10:17:36 -0400\n' 'Message-Id: <*****@*****.**>\n') message = ('Subject: example\n' '\n' 'This is just an example\n') msgid = delivery.send(fromaddr, toaddrs, opt_headers + message) try: transaction.commit() finally: # Clean up after ourselves transaction.abort()
def testSend(self): from zope.sendmail.delivery import DirectMailDelivery mailer = MailerStub() delivery = DirectMailDelivery(mailer) fromaddr = 'Jim <*****@*****.**' toaddrs = ('Guido <*****@*****.**>', 'Steve <steve@examplecom>') opt_headers = ('From: Jim <*****@*****.**>\n' 'To: some-zope-coders:;\n' 'Date: Mon, 19 May 2003 10:17:36 -0400\n' 'Message-Id: <*****@*****.**>\n') message = ('Subject: example\n' '\n' 'This is just an example\n') msgid = delivery.send(fromaddr, toaddrs, opt_headers + message) self.assertEquals(msgid, '*****@*****.**') self.assertEquals(mailer.sent_messages, []) transaction.commit() self.assertEquals(mailer.sent_messages, [(fromaddr, toaddrs, opt_headers + message)]) mailer.sent_messages = [] msgid = delivery.send(fromaddr, toaddrs, message) self.assert_('@' in msgid) self.assertEquals(mailer.sent_messages, []) transaction.commit() self.assertEquals(len(mailer.sent_messages), 1) self.assertEquals(mailer.sent_messages[0][0], fromaddr) self.assertEquals(mailer.sent_messages[0][1], toaddrs) self.assert_(mailer.sent_messages[0][2].endswith(message)) new_headers = mailer.sent_messages[0][2][:-len(message)] self.assert_(new_headers.find('Message-Id: <%s>' % msgid) != -1) mailer.sent_messages = [] msgid = delivery.send(fromaddr, toaddrs, opt_headers + message) self.assertEquals(mailer.sent_messages, []) transaction.abort() self.assertEquals(mailer.sent_messages, [])
def delivery_for_site(site=None): delivery = queryUtility(IMailDelivery, 'naaya-mail-delivery') if delivery is not None: return delivery elif site and site.mail_server_name and site.mail_server_port: from zope.sendmail.delivery import DirectMailDelivery site_mailer = BestEffortSMTPMailer(site.mail_server_name, site.mail_server_port) return DirectMailDelivery(site_mailer) else: return None
def _send(self, mfrom, mto, messageText, immediate=False): """ Send the message """ if immediate: self._makeMailer().send(mfrom, mto, messageText) else: if self.smtp_queue: # Start queue processor thread, if necessary self._startQueueProcessorThread() delivery = QueuedMailDelivery(self.smtp_queue_directory) else: delivery = DirectMailDelivery(self._makeMailer()) delivery.send(mfrom, mto, messageText)