2012-08-07 7 views
6

Próbuję użyć Pythona smtplib, aby ustawić priorytet wiadomości e-mail na wysoką. Z powodzeniem korzystałem z tej biblioteki do wysyłania wiadomości e-mail, ale nie jestem pewien, jak uzyskać priorytet działający.SMTP wysyła priorytetowy adres e-mail

import smtplib 
from smtplib import SMTP 

Moja pierwsza próba była to wykorzystać z badania, jak ustawić priorytet:

smtp.sendmail(from_addr, to_addr, msg, priority ="high") 

Jednak mam błąd: keyword priority is not recognized.

Próbowałem również przy użyciu:

msg['X-MSMail-Priority'] = 'High' 

Jednak pojawia się kolejny błąd. Czy istnieje sposób, aby ustawić priorytet za pomocą tylko smtplib?

+4

i co to jest „inny błąd” dokładnie? Poza tym: odzywają się nowe wywołania interfejsu API. Metoda sendmail() nie przyjmuje parametru "priority" - dlaczego nie sprawdzasz dokumentów API? sendmail() akceptuje parametr mail_options, który jest listą parametrów. Nie zgaduj API, sprawdź je. –

+0

Nie mogę znaleźć żadnej dokumentacji w Internecie określającej parametry mail_options! Bezskutecznie próbowałem tego: smtp.sendmail (from_addr, to_addr, msg [, mail_options = [priority = "high"]]) – Sarah92

+0

@SarahAddis [The docs] (http://docs.python.org/library/smtplib .html # smtplib.SMTP.sendmail) wyraźnie stwierdza, że ​​"osoba dzwoniąca może przekazać listę opcji ESMTP (takich jak 8bitmime), które będą używane w poleceniu MAIL FROM jako opcje mail_ .Te opcje ESMTP (takie jak polecenia DSN), które powinny być używane z wszystkie komendy RCPT mogą być przekazywane jako opcje rcpt_options. " Będziesz musiał sprawdzić w RFC, jakie opcje ESMPT i opcje RCPT są. – glglgl

Odpowiedz

15

Priorytet jest tylko kwestią treści wiadomości e-mail (dokładnie, treści nagłówka). Zobacz here.

Następne pytanie brzmi: jak umieścić to w e-mailu.

To całkowicie zależy od tego, jak skompilujesz tę wiadomość e-mail. Jeśli używasz modułu email, byś zrobił to w ten sposób:

from email.Message import Message 
m = Message() 
m['From'] = 'me' 
m['To'] = 'you' 
m['X-Priority'] = '2' 
m['Subject'] = 'Urgent!' 
m.set_payload('Nothing.') 

a następnie używać go z

smtp.sendmail(from_addr, to_addr, m.as_string()) 
+0

Jak na "Flag" podczas wysyłania wiadomości? Próbowałem powyższego z dodatkową linią jako "m ['Flag'] = '1'". Nie dostałem żadnego błędu, ale flagi też nie było. – zingy

+1

Przypisywanie @zingy 2, poda Twoją flagę – Busturdust

+0

@Busturdust Z priorytetem "2" pojawił się tylko znak wykrzyknika, ale flaga nie została włączona. – zingy