Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用smpt发送包含多个附件的电子邮件_Python_Python 3.x_Email_Smtp_Smtplib - Fatal编程技术网

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)