Esempio n. 1
0
    def notifyFailure(self, relay, message):
        """
        Generate a bounce message for a message which cannot be relayed.

        @type relay: L{SMTPManagedRelayerFactory}
        @param relay: The factory for the relayer responsible for the message.

        @type message: L{bytes}
        @param message: The path of the file holding the message.
        """
        if self.noisy:
            log.msg("could not relay " + message)
        # Moshe - Bounce E-mail here
        # Be careful: if it's a bounced bounce, silently
        # discard it
        message = os.path.basename(message)
        with self.manager.queue.getEnvelopeFile(message) as fp:
            from_, to = pickle.load(fp)
        from_, to, bounceMessage = bounce.generateBounce(
            open(self.manager.queue.getPath(message) + "-D"), from_, to)
        fp, outgoingMessage = self.manager.queue.createNewMessage()
        with fp:
            pickle.dump([from_, to], fp)
        for line in bounceMessage.splitlines():
            outgoingMessage.lineReceived(line)
        outgoingMessage.eomReceived()
        self._finish(relay, self.manager.queue.getPath(message))
    def test_bounceMessageCustomTranscript(self):
        """
        Pass a custom transcript message to L{twisted.mail.bounce.generateBounce}.
        """
        fromAddress, to, s = bounce.generateBounce(
            BytesIO(b"""\
From: Moshe Zadka <*****@*****.**>
To: [email protected]
Subject: test

"""),
            b"*****@*****.**",
            b"*****@*****.**",
            "Custom transcript",
        )
        self.assertEqual(fromAddress, b"")
        self.assertEqual(to, b"*****@*****.**")
        emailParser = email.parser.Parser()
        mess = emailParser.parse(StringIO(s.decode("utf-8")))
        self.assertEqual(mess["To"], "*****@*****.**")
        self.assertEqual(mess["From"], "*****@*****.**")
        self.assertEqual(mess["subject"],
                         "Returned Mail: see transcript for details")
        self.assertTrue(mess.is_multipart())
        parts = mess.get_payload()
        self.assertEqual(parts[0].get_payload(), "Custom transcript\n")
    def notifyFailure(self, relay, message):
        """
        Generate a bounce message for a message which cannot be relayed.

        @type relay: L{SMTPManagedRelayerFactory}
        @param relay: The factory for the relayer responsible for the message.

        @type message: L{bytes}
        @param message: The path of the file holding the message.
        """
        if self.noisy:
            log.msg("could not relay " + message)
        # Moshe - Bounce E-mail here
        # Be careful: if it's a bounced bounce, silently
        # discard it
        message = os.path.basename(message)
        with self.manager.queue.getEnvelopeFile(message) as fp:
            from_, to = pickle.load(fp)
        from_, to, bounceMessage = bounce.generateBounce(
            open(self.manager.queue.getPath(message) + '-D'), from_, to)
        fp, outgoingMessage = self.manager.queue.createNewMessage()
        with fp:
            pickle.dump([from_, to], fp)
        for line in bounceMessage.splitlines():
            outgoingMessage.lineReceived(line)
        outgoingMessage.eomReceived()
        self._finish(relay, self.manager.queue.getPath(message))
Esempio n. 4
0
    def testBounceFormat(self):
        from_, to, s = bounce.generateBounce(cStringIO.StringIO('''\
From: Moshe Zadka <*****@*****.**>
To: [email protected]
Subject: test

'''), '*****@*****.**', '*****@*****.**')
        self.assertEqual(from_, '')
        self.assertEqual(to, '*****@*****.**')
        mess = rfc822.Message(cStringIO.StringIO(s))
        self.assertEqual(mess['To'], '*****@*****.**')
        self.assertEqual(mess['From'], '*****@*****.**')
        self.assertEqual(mess['subject'], 'Returned Mail: see transcript for details')
Esempio n. 5
0
    def testBounceFormat(self):
        from_, to, s = bounce.generateBounce(cStringIO.StringIO('''\
From: Moshe Zadka <*****@*****.**>
To: [email protected]
Subject: test

'''), '*****@*****.**', '*****@*****.**')
        self.assertEquals(from_, '')
        self.assertEquals(to, '*****@*****.**')
        mess = rfc822.Message(cStringIO.StringIO(s))
	self.assertEquals(mess['To'], '*****@*****.**')
	self.assertEquals(mess['From'], '*****@*****.**')
	self.assertEquals(mess['subject'], 'Returned Mail: see transcript for details')
Esempio n. 6
0
 def notifyFailure(self, relay, message):
     """Relaying the message has failed."""
     log.msg("could not relay "+message)
     # Moshe - Bounce E-mail here
     # Be careful: if it's a bounced bounce, silently
     # discard it
     message = os.path.basename(message)
     fp = self.queue.getEnvelopeFile(message)
     from_, to = pickle.load(fp)
     fp.close()
     from_, to, bounceMessage = bounce.generateBounce(open(self.queue.getPath(message)+'-D'), from_, to)
     fp, outgoingMessage = self.queue.createNewMessage()
     pickle.dump([from_, to], fp)
     fp.close()
     for line in string.split(bounceMessage, '\n')[:-1]:
          outgoingMessage.lineReceived(line)
     outgoingMessage.eomReceived()
     self._finish(relay, self.queue.getPath(message))
Esempio n. 7
0
 def notifyFailure(self, relay, message):
     """Relaying the message has failed."""
     if self.manager.queue.noisy:
         log.msg("could not relay "+message)
     # Moshe - Bounce E-mail here
     # Be careful: if it's a bounced bounce, silently
     # discard it
     message = os.path.basename(message)
     fp = self.manager.queue.getEnvelopeFile(message)
     from_, to = pickle.load(fp)
     fp.close()
     from_, to, bounceMessage = bounce.generateBounce(open(self.manager.queue.getPath(message)+'-D'), from_, to)
     fp, outgoingMessage = self.manager.queue.createNewMessage()
     pickle.dump([from_, to], fp)
     fp.close()
     for line in bounceMessage.splitlines():
          outgoingMessage.lineReceived(line)
     outgoingMessage.eomReceived()
     self._finish(relay, self.manager.queue.getPath(message))
 def _bounceBigMessage(self, header, message, ioType):
     """
     Pass a really big message to L{twisted.mail.bounce.generateBounce}.
     """
     fromAddress, to, s = bounce.generateBounce(ioType(header + message),
                                                "*****@*****.**",
                                                "*****@*****.**")
     emailParser = email.parser.Parser()
     mess = emailParser.parse(StringIO(s.decode("utf-8")))
     self.assertEqual(mess["To"], "*****@*****.**")
     self.assertEqual(mess["From"], "*****@*****.**")
     self.assertEqual(mess["subject"],
                      "Returned Mail: see transcript for details")
     self.assertTrue(mess.is_multipart())
     parts = mess.get_payload()
     innerMessage = parts[1].get_payload()
     if isinstance(message, bytes):
         message = message.decode("utf-8")
     self.assertEqual(innerMessage[0].get_payload() + "\n", message)
Esempio n. 9
0
    def test_bounceMessageBytes(self):
        """
        L{twisted.mail.bounce.generateBounce} can accept L{bytes}.
        """
        fromAddress, to, s = bounce.generateBounce(
            BytesIO(b'''\
From: Moshe Zadka <*****@*****.**>
To: [email protected]
Subject: test

'''), b'*****@*****.**', b'*****@*****.**')
        self.assertEqual(fromAddress, b'')
        self.assertEqual(to, b'*****@*****.**')
        emailParser = email.parser.Parser()
        mess = emailParser.parse(StringIO(s.decode("utf-8")))
        self.assertEqual(mess['To'], '*****@*****.**')
        self.assertEqual(mess['From'], '*****@*****.**')
        self.assertEqual(mess['subject'],
                         'Returned Mail: see transcript for details')
Esempio n. 10
0
    def testBounceFormat(self):
        from_, to, s = bounce.generateBounce(
            cStringIO.StringIO(
                """\
From: Moshe Zadka <*****@*****.**>
To: [email protected]
Subject: test

"""
            ),
            "*****@*****.**",
            "*****@*****.**",
        )
        self.assertEqual(from_, "")
        self.assertEqual(to, "*****@*****.**")
        mess = rfc822.Message(cStringIO.StringIO(s))
        self.assertEqual(mess["To"], "*****@*****.**")
        self.assertEqual(mess["From"], "*****@*****.**")
        self.assertEqual(mess["subject"], "Returned Mail: see transcript for details")
    def test_bounceMessageBytes(self):
        """
        L{twisted.mail.bounce.generateBounce} can accept L{bytes}.
        """
        fromAddress, to, s = bounce.generateBounce(
            BytesIO(b"""\
From: Moshe Zadka <*****@*****.**>
To: [email protected]
Subject: test

"""),
            b"*****@*****.**",
            b"*****@*****.**",
        )
        self.assertEqual(fromAddress, b"")
        self.assertEqual(to, b"*****@*****.**")
        emailParser = email.parser.Parser()
        mess = emailParser.parse(StringIO(s.decode("utf-8")))
        self.assertEqual(mess["To"], "*****@*****.**")
        self.assertEqual(mess["From"], "*****@*****.**")
        self.assertEqual(mess["subject"],
                         "Returned Mail: see transcript for details")
Esempio n. 12
0
    def test_bounceMessageCustomTranscript(self):
        """
        Pass a custom transcript message to L{twisted.mail.bounce.generateBounce}.
        """
        fromAddress, to, s = bounce.generateBounce(
            BytesIO(b'''\
From: Moshe Zadka <*****@*****.**>
To: [email protected]
Subject: test

'''), b'*****@*****.**', b'*****@*****.**', 'Custom transcript')
        self.assertEqual(fromAddress, b'')
        self.assertEqual(to, b'*****@*****.**')
        emailParser = email.parser.Parser()
        mess = emailParser.parse(StringIO(s.decode("utf-8")))
        self.assertEqual(mess['To'], '*****@*****.**')
        self.assertEqual(mess['From'], '*****@*****.**')
        self.assertEqual(mess['subject'],
                         'Returned Mail: see transcript for details')
        self.assertTrue(mess.is_multipart())
        parts = mess.get_payload()
        self.assertEqual(parts[0].get_payload(), 'Custom transcript\n')