Cant send email via python using gmail - smtplib.SMTPException: SMTP AUTH extension not supported by server

32,436

Solution 1

You need a call to starttls() before you login:

smtp = smtplib.SMTP('smtp.gmail.com:587')
smtp.starttls()
smtp.login('[email protected]', 'fu')

Also, your send_from should be a str, not a list:

send_from='[email protected]'

Note that smtp.starttls() calls smtp.ehlo() implicitly:

If there has been no previous EHLO or HELO command this session, this method tries ESMTP EHLO first. https://docs.python.org/2/library/smtplib.html#smtplib.SMTP.starttls

Solution 2

On gmail you also have to give a smtp.ehlo() before smtp.starttls() This is also duplicate of How to send an email with Gmail as provider using Python?

Share:
32,436
Tampa
Author by

Tampa

Updated on July 18, 2022

Comments

  • Tampa
    Tampa almost 2 years

    I just want to send an email in python with an attachment

    import smtplib, os
    from email.MIMEMultipart import MIMEMultipart
    from email.MIMEBase import MIMEBase
    from email.MIMEText import MIMEText
    from email.Utils import COMMASPACE, formatdate
    from email import Encoders
    
    def send_mail(send_from, send_to, subject, text, files=[], server="localhost"):
        assert type(send_to)==list
        assert type(files)==list
    
        msg = MIMEMultipart()
        msg['From'] = send_from
        msg['To'] = COMMASPACE.join(send_to)
        msg['Date'] = formatdate(localtime=True)
        msg['Subject'] = subject
    
        msg.attach( MIMEText(text) )
    
        for f in files:
            part = MIMEBase('application', "octet-stream")
            part.set_payload( open(f,"rb").read() )
            Encoders.encode_base64(part)
            part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f))
            msg.attach(part)
    
        smtp = smtplib.SMTP('smtp.gmail.com:587')
        smtp.login('[email protected]','fu')
        smtp.sendmail(send_from, send_to, msg.as_string())
        smtp.close()
    
    ATTACHMENTS = ['/tmp/2013-11-04-test.csv']
    send_from=['[email protected]']
    send_to=['[email protected]']
    subject='adfadfadf'
    text = 'adfadfadf'
    send_mail(send_from, send_to, subject, text, files=ATTACHMENTS)
    

    How do I auth? I have to provide a username and password. How?

    Traceback (most recent call last):
      File "/home/ubuntu/workspace/miliza-devops/classes/utilities.py", line 133, in <module>
        send_mail(send_from, send_to, subject, text, files=ATTACHMENTS)
      File "/home/ubuntu/workspace/miliza-devops/classes/utilities.py", line 124, in send_mail
        smtp.login('[email protected]','fu')
      File "/usr/lib/python2.7/smtplib.py", line 576, in login
        raise SMTPException("SMTP AUTH extension not supported by server.")
    smtplib.SMTPException: SMTP AUTH extension not supported by server.