Thunderbird(python,Mac):填写电子邮件,主题,正文,附件

时间:2014-12-08 23:49:55

标签: python macos email thunderbird

我从这里尝试了一些东西: 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'")

有关如何更改附件格式以便成功附加的任何想法?它没有抛出这种格式的任何错误,它只是没有附加文件。

更新:它现在正在工作,我错过了一个斜杠,上面的格式现在适合我。

2 个答案:

答案 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"的完整逗号分隔的参数列表,而单引号用于对同一参数的项目进行分组。

希望这有帮助!