Gmail Python multiple attachments

前端 未结 3 646
轮回少年
轮回少年 2020-12-16 06:55

I am trying to create a little script that will email multiple attachments using gmail. The code below sends the email but not the attachments. The intended use is to cron a

3条回答
  •  死守一世寂寞
    2020-12-16 07:35

    Thanks @marc! I can't comment on your answer, so here are few fixes (misnamed variables) and small improvements:

    import os
    import smtplib
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from email import MIMEImage
    from email.mime.base import MIMEBase
    from email import Encoders
    
    def mail(to, subject, text, attach):
        # allow either one recipient as string, or multiple as list
        if not isinstance(to,list):
            to = [to]
        # allow either one attachment as string, or multiple as list
        if not isinstance(attach,list):
            attach = [attach]
    
        gmail_user='username@gmail.com'
        gmail_pwd = "password"
        msg = MIMEMultipart()
        msg['From'] = gmail_user
        msg['To'] = ", ".join(to)
        msg['Subject'] = subject
    
        msg.attach(MIMEText(text))
    
        #get all the attachments
        for file in attach:
            print file
            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)
    
        mailServer = smtplib.SMTP("smtp.gmail.com", 587)
        mailServer.ehlo()
        mailServer.starttls()
        mailServer.ehlo()
        mailServer.login(gmail_user, gmail_pwd)
        mailServer.sendmail(gmail_user, to, msg.as_string())
        # Should be mailServer.quit(), but that crashes...
        mailServer.close()
    
    if __name__ == '__main__':
        mail(['recipient1', 'recipient2'], 'subject', 'body text',
             ['attachment1', 'attachment2'])
    

提交回复
热议问题