用python发送带有附件的邮件将其发送多次

时间:2018-09-21 07:18:24

标签: python email gmail

以python发送带有附件的邮件时,虽然可以正常发送邮件,但它以三种不同的邮件形式发送,每封邮件都带有附件。

我该如何使所有文件成为一封邮件。

filename = ['GIG.JPG', "facebook.png", "cld.png"]

for n in filename:
    print(n)
    attachment = open(str(n), 'rb')

    part = MIMEBase('application', 'octet-stream')
    part.set_payload((attachment).read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', "attachment; filename= " + n)

    msg.attach(part)
    text = msg.as_string()
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(FROMADDR, PASSWORD)

    server.sendmail(FROMADDR, TOADDR + CCADDR, msg.as_string())
    server.quit()      

2 个答案:

答案 0 :(得分:0)

您正在遍历包含3个项目的文件名数组,因此邮件进行了三遍。

做这样的事情

 from email.mime.image import MIMEImage

 for file in filename:
 # Open the files in binary mode.  Let the MIMEImage class automatically
 # guess the specific image type.
     with open(file, 'rb') as fp:
         img = MIMEImage(fp.read())
     msg.attach(img)

这可能适合您的情况。

答案 1 :(得分:0)

代替迭代文件并发送邮件,您应该迭代并将它们添加到邮件中并仅发送一次。

client used wrong authentication scheme