Python 使用smpt发送包含多个附件的电子邮件
我有一个脚本,可以向多个用户发送带有多个附件的电子邮件。但是,附件的文件名设置为其路径 收到的文件 终端输出 我如何将它们的名称设置为实际文件名,谢谢 “”“Python 使用smpt发送包含多个附件的电子邮件,python,python-3.x,email,smtp,smtplib,Python,Python 3.x,Email,Smtp,Smtplib,我有一个脚本,可以向多个用户发送带有多个附件的电子邮件。但是,附件的文件名设置为其路径 收到的文件 终端输出 我如何将它们的名称设置为实际文件名,谢谢 “”“ “”“此链接中可能有一个解决方案: 根据这篇文章,解决方案基本上是改变你的这一行: part.add_header('Content-Disposition', 'attachment; filename="%s"' % file) 关于这一行: part.add_header('Content-Disposi
“”“此链接中可能有一个解决方案: 根据这篇文章,解决方案基本上是改变你的这一行:
part.add_header('Content-Disposition', 'attachment; filename="%s"' % file)
关于这一行:
part.add_header('Content-Disposition', 'attachment', filename=AFileName)
最终的变化是:
#get all the attachments
for file in filenames:
part = MIMEBase('application', 'octet-stream')
part.set_payload(open(file, 'rb').read())
Encoders.encode_base64(part)
***part.add_header('Content-Disposition', 'attachment', filename=file)***
msg.attach(part)
希望有帮助!:D
更新
在for循环中包含此文件应提供以下文件名:
for file in filenames:
actual_filenames = os.path.basename(file)
#Your code
part.add_header('Content-Disposition', 'attachment', filename=actual_filenames)
如果它位于同一目录中:
import os
for f in os.listdir('.'):
fn, fext = os.path.splitext(f)
仍然得到了相同的结果,不确定哪里出了问题。在for循环中,“for file In filenames:”你能打印(文件)来显示@SaadAbdulla的输出吗?请在你的评论或原始帖子@SaadAbdullaSure中添加请求的图像,我将其添加到我的帖子中。@SaadAbdulla我已经编辑了我的答案,请看一下所做的更改,如果有帮助请告诉我。我不明白第二行,你确定syntix吗?它在脚本中的确切位置是什么?f=文件名:因此,如果您将脚本放入for循环并发送“f”,它将发送目录中的所有文件
import os
for f in os.listdir('.'):
fn, fext = os.path.splitext(f)