以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()
答案 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