Sending mail from Python using SMTP

后端 未结 13 820
半阙折子戏
半阙折子戏 2020-11-28 17:27

I\'m using the following method to send mail from Python using SMTP. Is it the right method to use or are there gotchas I\'m missing ?

from smtplib import SM         


        
13条回答
  •  失恋的感觉
    2020-11-28 18:07

    The script I use is quite similar; I post it here as an example of how to use the email.* modules to generate MIME messages; so this script can be easily modified to attach pictures, etc.

    I rely on my ISP to add the date time header.

    My ISP requires me to use a secure smtp connection to send mail, I rely on the smtplib module (downloadable at http://www1.cs.columbia.edu/~db2501/ssmtplib.py)

    As in your script, the username and password, (given dummy values below), used to authenticate on the SMTP server, are in plain text in the source. This is a security weakness; but the best alternative depends on how careful you need (want?) to be about protecting these.

    =======================================

    #! /usr/local/bin/python
    
    
    SMTPserver = 'smtp.att.yahoo.com'
    sender =     'me@my_email_domain.net'
    destination = ['recipient@her_email_domain.com']
    
    USERNAME = "USER_NAME_FOR_INTERNET_SERVICE_PROVIDER"
    PASSWORD = "PASSWORD_INTERNET_SERVICE_PROVIDER"
    
    # typical values for text_subtype are plain, html, xml
    text_subtype = 'plain'
    
    
    content="""\
    Test message
    """
    
    subject="Sent from Python"
    
    import sys
    import os
    import re
    
    from smtplib import SMTP_SSL as SMTP       # this invokes the secure SMTP protocol (port 465, uses SSL)
    # from smtplib import SMTP                  # use this for standard SMTP protocol   (port 25, no encryption)
    
    # old version
    # from email.MIMEText import MIMEText
    from email.mime.text import MIMEText
    
    try:
        msg = MIMEText(content, text_subtype)
        msg['Subject']=       subject
        msg['From']   = sender # some SMTP servers will do this automatically, not all
    
        conn = SMTP(SMTPserver)
        conn.set_debuglevel(False)
        conn.login(USERNAME, PASSWORD)
        try:
            conn.sendmail(sender, destination, msg.as_string())
        finally:
            conn.quit()
    
    except:
        sys.exit( "mail failed; %s" % "CUSTOM_ERROR" ) # give an error message
    

提交回复
热议问题