Próbuję napisać funkcję Pythona, aby wysłać wiadomość e-mail do listy użytkowników przy użyciu domyślnego zainstalowanego klienta poczty. Chcę otworzyć klienta poczty e-mail i dać użytkownikowi możliwość edytowania listy użytkowników lub treści wiadomości e-mail.Python - Otwórz domyślnego klienta poczty, używając mailto, z wieloma adresatami
Zrobiłem kilka wyszukiwania, a według tutaj:
http://www.sightspecific.com/~mosh/WWW_FAQ/multrec.html
To pozornie przeciwko specyfikacji RFC umieścić wielu odbiorców, oddziel je przecinkami w mailto link. Tak jednak wydaje się, że wszyscy tak robią. Co to jest współczesne stanowisko w tej sprawie?
Byle jak, znalazłem następujące dwie strony:
- http://2ality.blogspot.com/2009/02/generate-emails-with-mailto-urls-and.html
- http://www.megasolutions.net/python/invoke-users-standard-mail-client-64348.aspx
które zdają się sugerować rozwiązania wykorzystujące urllib.parse (url.parse.quote dla mnie), a webbrowser.open.
Próbowałem kodu przykładowego z pierwszego linku (2ality.blogspot.com), który działał dobrze i otworzył domyślnego klienta poczty. Jednak kiedy próbuję użyć kodu w moim własnym module, wydaje mi się, że otwieram domyślną przeglądarkę z jakiegoś dziwnego powodu. Brak tekstu w pasku adresu, po prostu otwiera przeglądarkę.
Funkcja email_incorrect_phone_numbers() znajduje się w klasie Employees, która zawiera słownik (employee_dict) obiektów Employee, które same mają wiele atrybutów pracowniczych (sn, givenName, mail itp.). Pełny kod jest faktycznie tutaj (Python - Converting CSV to Objects - Code Design)
from urllib.parse import quote
import webbrowser
....
def email_incorrect_phone_numbers(self):
email_list = []
for employee in self.employee_dict.values():
if not PhoneNumberFormats.standard_format.search(employee.telephoneNumber):
print(employee.telephoneNumber, employee.sn, employee.givenName, employee.mail)
email_list.append(employee.mail)
recipients = ', '.join(email_list)
webbrowser.open("mailto:%s?subject=%s&body=%s" %
(recipients, quote("testing"), quote('testing'))
)
Wszelkie sugestie?
Cheers, Victor
+1, cofam wniosek. –
Hmm, tak, wygląda na to, że mailto jest zepsute. Jedynym problemem jest to, że chcemy, aby użytkownik mógł edytować listę mailto, temat i ciało, jeśli chcą. Otwieranie swojego klienta poczty z rzeczy wstępnie wypełnionych jest dobrym sposobem na to. Ponadto jest to dość jednorodne środowisko korporacyjne, więc wiemy, jakiego klienta poczty e-mail ma mieć użytkownik i jak jest skonfigurowane jego środowisko. To i jest to narzędzie, które naprawdę działa tylko jeden użytkownik (przynajmniej na razie). – victorhooi
Po drugie, smtplib nie jest tak naprawdę opcją, ponieważ jest to środowisko korporacyjne. Jest to małe narzędzie uruchamiane na pulpicie użytkownika, nie ma wewnętrznych serwerów SMTP, do których mielibyśmy dostęp, i nie możemy uderzyć na zewnętrzne z powodu korporacyjnego proxy/zapory (i nie powinniśmy tego robić zarówno). Czy nie ma czystej metody robienia tego, z wyjątkiem korzystania z serwera SMTP? Twoja ostatnia opcja wygląda intrygująco, ale nie wiesz, jak ją osiągnąć. – victorhooi