def mailto_url(to=None,subject=None,body=None,cc=None):
url = "mailto:" + urllib.quote(to.strip(),"@,")
sep = "?"
if cc:
url+= sep + "cc=" + urllib.quote(cc,"@,")
sep = "&"
if subject:
url+= sep + "subject=" + urllib.quote(subject,"")
sep = "&"
if body:
body="\r\n".join(body.splitlines())
url+= sep + "body=" + urllib.quote(body,"")
sep = "&"
return url
import urllib
import webbrowser
url = mailto_url('email address', 'subject', 'message body')
webbrowser.open(url,new=1)
У меня есть код выше, чтобы вывести почтовый клиент по умолчанию. Но мне нужно автоматизировать отправку электронной почты. Есть ли способ использовать script для нажатия кнопки "Отправить"?
Зачем вам нужно отправить сообщение через клиент GUI? Клиент разработан как интерфейс между протоколами электронной почты и человеком с мышью и клавиатурой, а не с вашим Python script.
Вы можете использовать модуль smtplib для отправки электронной почты непосредственно с Python. Если вам нужна запись об этом в Thunderbird, возможно, вы могли бы использовать ее для себя.
Сохраните это в файле, например sendmail.vbs
dim sendKeyObj
Set sendKeyObj = CreateObject("WScript.Shell")
sendKeyObj.SendKeys "^{ENTER}"
и использовать python для запуска этого script из командной строки с помощью
cscript /nologo "C:\path\to\sendmail.vbs"
Итак, это было бы в Python
import os
os.system("cscript /nologo \"C:\\path\\to\\sendmail.vbs\"")
(Надеюсь, у меня все получилось). Возможно, вы захотите использовать модуль подпроцесса вместо os. VBScript действительно только нажимает кнопку "Отправить" в Thunderbird. Я думаю, что это работает только в том случае, если почта e- может появиться в новом окне перед всем остальным. Я использую этот set- для отправки счетов-фактур и т.п.
Если вам нужно/нужно сделать это с помощью Python, там может быть полезен инструмент автоматизации Windows GUI под названием pywinauto.