【问题标题】:Mutt not attaching multiple files and sending attachment to server in pythonMutt没有附加多个文件并将附件发送到python中的服务器
【发布时间】:2014-02-20 13:59:44
【问题描述】:

所以,我正在尝试使用 mutt 将所有 .csv 文件附加到一个文件夹中,但它不合作。出于某种原因,它只附加了其中一个,我认为我做得对。奇怪的是,mutt 还会将它实际附加到服务器的 .csv 文件发送出去。我的意思是,我收到一封电子邮件,其中附有一个文件,并且在“收件人:”字段中它具有 .csv file@server I.E “收件人:MyCsvFile.csv@server.serv.net; myemail@domain.com”。所以,它发送到我希望它发送到的电子邮件,在服务器之上......为什么它发送到服务器并且只附加一个 .csv?

def sendEmail():
    email = 'myemail@domain.com'
    Extracts = "/path/path/path/path/path/*.csv"
    blankEmailContentFile = '/path/path/path/path/blank'

    fh = open(blankEmailContentFile, 'w+')
    fh.close()

    linuxCMD = 'mutt -s "Email Subject" -a %s "%s" < %s' % (Extracts, email, blankEmailContentFile )
    os.system(linuxCMD)

【问题讨论】:

    标签: python linux email csv mutt


    【解决方案1】:

    您的mutt 命令行不正确。根据mutt(1) 手册页:

       -a file [...]
              Attach  a  file  to  your message using MIME.  When attaching single or multiple files,
              separating filenames and recipient addresses with  "--"  is  mandatory,  e.g.  mutt  -a
              image.jpg  --  addr1  or  mutt  -a img.jpg *.png -- addr1 addr2.  The -a option must be
              placed at the end of command line options.
    

    如果没有-- 将文件名与地址分开,mutt 会将除第一个文件名之外的所有内容解释为目标地址。您的命令行应该类似于:

    linuxCMD = 'mutt -s "Email Subhect" -a %s -- "%s" < %s' % (Extracts, email, blankEmailContentFile )
    

    虽然上述方法可行,但这将是一个很好的机会来研究subprocess 模块并找出如何构建一个不依赖于shell 通配符扩展的命令行以便正确运行。还有一个用于 Python 的 smtplib 模块,它允许您在不依赖外部程序的情况下发送电子邮件。

    【讨论】:

    • 感谢 larks,但无论有没有“--”,该命令的行为都完全相同。它仍然只附加一个文件并将文件发送到服务器。无论如何,为了更好的练习,我确实在命令中添加了“--”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 2012-11-17
    • 2021-12-01
    • 2020-08-28
    • 2016-01-05
    • 2019-04-23
    • 2015-07-18
    相关资源
    最近更新 更多