Python smtp.connect does not connect

Tags: , ,



I’m writing a small python script to send an email, but my code isn’t even getting past smtp connection. I’m using the following code, but I never see “Connected”. Additionally, I’m not seeing an exception thrown, so I think it’s hanging on something.

import os
import platform
import smtplib

#Define our SMTP server. We use gmail. Try to connect.
try:
    server = smtplib.SMTP()
    print "Defined server"
    server.connect("smtp.gmail.com",465)
    print "Connected"
    server.ehlo()
    server.starttls()
    server.ehlo()
    print "Complete Initiation"
except Exception, R:
    print R

Answer

Port 465 is for SMTPS; to connect to SMTPS you need to use the SMTP_SSL; however SMTPS is deprecated, and you should be using 587 (with starttls). (Also see this answer about SMTPS and MSA).

Either of these will work: 587 with starttls:

server = smtplib.SMTP()
print("Defined server")
server.connect("smtp.gmail.com",587)
print("Connected")
server.ehlo()
server.starttls()
server.ehlo()

or 465 with SMTP_SSL.

server = smtplib.SMTP_SSL()
print("Defined server")
server.connect("smtp.gmail.com", 465)
print("Connected")
server.ehlo()


Source: stackoverflow