mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	This issue can arise with ISPs that redirect all connections on port 25 to their own (crappy) mail servers.
		
			
				
	
	
		
			63 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#!/usr/bin/env python3
 | 
						|
 | 
						|
import unittest
 | 
						|
from test import support
 | 
						|
import smtplib
 | 
						|
 | 
						|
ssl = support.import_module("ssl")
 | 
						|
 | 
						|
support.requires("network")
 | 
						|
 | 
						|
 | 
						|
class SmtpTest(unittest.TestCase):
 | 
						|
    testServer = 'smtp.gmail.com'
 | 
						|
    remotePort = 25
 | 
						|
    context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
 | 
						|
 | 
						|
    def test_connect_starttls(self):
 | 
						|
        support.get_attribute(smtplib, 'SMTP_SSL')
 | 
						|
        with support.transient_internet(self.testServer):
 | 
						|
            server = smtplib.SMTP(self.testServer, self.remotePort)
 | 
						|
            try:
 | 
						|
                server.starttls(context=self.context)
 | 
						|
            except smtplib.SMTPException as e:
 | 
						|
                if e.args[0] == 'STARTTLS extension not supported by server.':
 | 
						|
                    unittest.skip(e.args[0])
 | 
						|
                else:
 | 
						|
                    raise
 | 
						|
            server.ehlo()
 | 
						|
            server.quit()
 | 
						|
 | 
						|
 | 
						|
class SmtpSSLTest(unittest.TestCase):
 | 
						|
    testServer = 'smtp.gmail.com'
 | 
						|
    remotePort = 465
 | 
						|
    context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
 | 
						|
 | 
						|
    def test_connect(self):
 | 
						|
        support.get_attribute(smtplib, 'SMTP_SSL')
 | 
						|
        with support.transient_internet(self.testServer):
 | 
						|
            server = smtplib.SMTP_SSL(self.testServer, self.remotePort)
 | 
						|
            server.ehlo()
 | 
						|
            server.quit()
 | 
						|
 | 
						|
    def test_connect_default_port(self):
 | 
						|
        support.get_attribute(smtplib, 'SMTP_SSL')
 | 
						|
        with support.transient_internet(self.testServer):
 | 
						|
            server = smtplib.SMTP_SSL(self.testServer)
 | 
						|
            server.ehlo()
 | 
						|
            server.quit()
 | 
						|
 | 
						|
    def test_connect_using_sslcontext(self):
 | 
						|
        support.get_attribute(smtplib, 'SMTP_SSL')
 | 
						|
        with support.transient_internet(self.testServer):
 | 
						|
            server = smtplib.SMTP_SSL(self.testServer, self.remotePort, context=self.context)
 | 
						|
            server.ehlo()
 | 
						|
            server.quit()
 | 
						|
 | 
						|
 | 
						|
def test_main():
 | 
						|
    support.run_unittest(SmtpTest, SmtpSSLTest)
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    test_main()
 |