How to send email attachments?

前端 未结 13 940
梦谈多话
梦谈多话 2020-11-22 01:14

I am having problems understanding how to email an attachment using Python. I have successfully emailed simple messages with the smtplib. Could someone please e

13条回答
  •  北荒
    北荒 (楼主)
    2020-11-22 01:48

    With my code you can send email attachments using gmail you will need to:

    set your gmail address at "YOUR SMTP EMAIL HERE"

    set your gmail account password at "YOUR SMTP PASSWORD HERE_"

    In the ___EMAIL TO RECEIVE THE MESSAGE_ part you need to set the destination email address.

    Alarm notification is the subject,

    Someone has entered the room, picture attached is the body

    ["/home/pi/webcam.jpg"] is an image attachment.

    #!/usr/bin/env python
    import smtplib
    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
    import os
    
    USERNAME = "___YOUR SMTP EMAIL HERE___"
    PASSWORD = "__YOUR SMTP PASSWORD HERE___"
    
    def sendMail(to, subject, text, files=[]):
        assert type(to)==list
        assert type(files)==list
    
        msg = MIMEMultipart()
        msg['From'] = USERNAME
        msg['To'] = COMMASPACE.join(to)
        msg['Date'] = formatdate(localtime=True)
        msg['Subject'] = subject
    
        msg.attach( MIMEText(text) )
    
        for file in files:
            part = MIMEBase('application', "octet-stream")
            part.set_payload( open(file,"rb").read() )
            Encoders.encode_base64(part)
            part.add_header('Content-Disposition', 'attachment; filename="%s"'
                           % os.path.basename(file))
            msg.attach(part)
    
        server = smtplib.SMTP('smtp.gmail.com:587')
        server.ehlo_or_helo_if_needed()
        server.starttls()
        server.ehlo_or_helo_if_needed()
        server.login(USERNAME,PASSWORD)
        server.sendmail(USERNAME, to, msg.as_string())
        server.quit()
    
    sendMail( ["___EMAIL TO RECEIVE THE MESSAGE__"],
            "Alarm notification",
            "Someone has entered the room, picture attached",
            ["/home/pi/webcam.jpg"] )
    

提交回复
热议问题