2014-12-08 3 views
0

Я пытался что-то отсюда: Python: Open Thunderbird to write new mail with attached file Этот фрагмент кода открывает новое сообщение электронной почты, чтобы записать в Thunderbird, но не включает в себя какой-либо из спецификации из кода ниже (адрес электронной почты, при условии, тело, вложения), это просто пустой новое сообщение электронной почты:Thunderbird (питон, Mac): Заполните по электронной почте, при условии, тело, приложите файл

import os 
os.system("/Applications/Thunderbird.app/Contents/MacOS/thunderbird -compose 
to='[email protected]',subject='hello',body='attached is txt 
file',attachment='Users/Username/Desktop/test.txt'") 

Как я пишу это так, что аргументы, я проходил мимо него включены?

UPDATE: Хорошо, это в основном работает с этим форматом, однако вложение не привязываясь:

os.system("/Applications/Thunderbird.app/Contents/MacOS/thunderbird -compose 
'[email protected]','subject=this subject','body=this is the 
body','attachment=/Users/Username/Desktop/test.txt'") 

Любые идеи о том, как изменить формат приложения таким образом, чтобы он успешно крепит? Он не бросает никаких ошибок в этот формат, он просто не прикрепляет файл.

UPDATE: теперь он работает, я пропустил одну косую черту, этот формат теперь работает для меня.

+0

что вам нужно? что вы делаете свою собственную функцию, которая делает это, и передавайте аргументы с помощью командной строки? – Abdelouahab

ответ

0

, как вы можете видеть, это

/Applications/Thunderbird.app/Contents/MacOS/thunderbird -compose to='[email protected]',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.* с обычной переменной.

+0

Я пробовал это, и он дает то же самое, просто пустое новое письмо. В скобках для приложения я помещаю путь Thunderbird, для «на» я помещаю адрес адреса назначения в двойные кавычки, и он по-прежнему не работает. Мне нужно новое электронное письмо, чтобы появиться в Thunderbird с адресом, темой, телом и приложением для всех. Единственное, что я могу успешно сделать, это открыть новое пустое электронное письмо в Thunderbird. – Kemba777

+0

вы использовали 'r'string'', возможно, это из-за'/t' – Abdelouahab

+0

Я думаю, что использование r'string 'просто меняется, как интерпретируются обратные косые черты. – Kemba777

0

Это работает для меня в Windows, но, возможно, вам не хватает двойных кавычек. Попробуйте использовать:

import os 
os.system("/Applications/Thunderbird.app/Contents/MacOS/thunderbird -compose 
\"to='[email protected]',subject='hello',body='attached is txt 
file',attachment='Users/Username/Desktop/test.txt'\"") 

Поскольку документация говорит:

Следите за несколько сложный синтаксис опции «-compose» в командной строке. Двойные кавычки включают полный список аргументов, разделенных запятыми, переданных в «-compose», тогда как одинарные кавычки используются для группировки элементов для одного и того же аргумента.

Надеюсь, это поможет!

+0

Спасибо, я помещаю то же самое, и он только доходит до создания нового пустого письма, я не уверен, где форматирование будет неправильным для остальных аргументов. Есть много документации для Windows по этому вопросу, но не много на osx. – Kemba777

 Смежные вопросы

  • Нет связанных вопросов^_^