【问题标题】:Sending mail in python with attachment sent it multiply times在带有附件的python中发送邮件多次发送
【发布时间】:2018-09-21 17:49:57
【问题描述】:

我在 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()      

【问题讨论】:

标签: python email gmail


【解决方案1】:

您正在遍历包含 3 个项目的文件名数组,因此邮件会发送 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)

这可能适用于您的情况。

【讨论】:

  • 我将如何导入MIMEImage
  • 添加了导入回答。
猜你喜欢
  • 2020-08-28
  • 2021-12-30
  • 1970-01-01
  • 2014-11-09
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
相关资源
最近更新 更多