我从这里尝试了一些东西: Python: Open Thunderbird to write new mail with attached file 此代码段会打开一封要在Thunderbird中编写的新电子邮件,但它不包含以下代码中的任何规范(电子邮件地址,主题,正文,附件),它只是一封空白的新电子邮件:
import os
os.system("/Applications/Thunderbird.app/Contents/MacOS/thunderbird -compose
to='abc@abc.com',subject='hello',body='attached is txt
file',attachment='Users/Username/Desktop/test.txt'")
如何编写它以便包含我传递的参数?
更新: 好吧,它主要使用这种格式,但附件没有附加:
os.system("/Applications/Thunderbird.app/Contents/MacOS/thunderbird -compose
'to=abc@abc.edu','subject=this subject','body=this is the
body','attachment=/Users/Username/Desktop/test.txt'")
有关如何更改附件格式以便成功附加的任何想法?它没有抛出这种格式的任何错误,它只是没有附加文件。
更新:它现在正在工作,我错过了一个斜杠,上面的格式现在适合我。
答案 0 :(得分:0)
如你所见,这个
/Applications/Thunderbird.app/Contents/MacOS/thunderbird -compose
to='abc@abc.com',subject='hello',body='attached is txt
file',attachment='Users/Username/Desktop/test.txt'
只是str
,所以删除变量,使用format()
,然后使用argparse
来捕获控制台参数:
import os
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('app', help='some help')
parser.add_argument('to', help='some help')
parser.add_argument('subject', help='some help')
parser.add_argument('body', help='some help')
parser.add_argument('attachement', help='some help')
args = parser.parse_args()
os.system("{0} -compose to={1},subject={2},body={3},attachment={4}".format(args.app, args.to, args.subject, args.body, args.attachement))
然后,将其命名为mailer.py
并运行它以查看帮助,如果不是您将使用它。
python mailer.py --help
现在,如果你想在python程序中使用它(例如Django),你所做的只是用args.*
替换普通变量。
答案 1 :(得分:0)
它适用于Windows,但也许你错过了双引号。尝试使用:
import os
os.system("/Applications/Thunderbird.app/Contents/MacOS/thunderbird -compose
\"to='abc@abc.com',subject='hello',body='attached is txt
file',attachment='Users/Username/Desktop/test.txt'\"")
由于文档说:
注意" -compose"的复杂语法。命令行选项。双引号括起传递给" -compose"的完整逗号分隔的参数列表,而单引号用于对同一参数的项目进行分组。
希望这有帮助!