2012-08-07 3 views
6

Ich versuche Pythons smtplib zu verwenden, um die Priorität einer E-Mail auf hoch festzulegen. Ich habe diese Bibliothek erfolgreich zum Senden von E-Mails verwendet, bin mir aber nicht sicher, wie die Priorität funktioniert.SMTP sendet eine Prioritäts-E-Mail

import smtplib 
from smtplib import SMTP 

Mein erster Versuch war, dies zu verwenden, um von der Erforschung, wie die Priorität gesetzt:

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

Jedoch habe ich einen Fehler bekam: keyword priority is not recognized.

Ich habe auch versucht mit:

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

Allerdings bekomme ich einen weiteren Fehler. Gibt es eine Möglichkeit, die Priorität nur mit smtplib zu setzen?

+4

Und was ist „ein anderer Fehler“ genau? Abgesehen davon: Sie führen neue API-Aufrufe ein. Die sendmail() -Methode verwendet keinen 'priority'-Parameter - warum überprüfen Sie nicht die API-Dokumente? sendmail() akzeptiert einen mail_options-Parameter, der eine Liste von Parametern ist ... ratet nicht API, sucht sie nach. –

+0

Ich kann keine Dokumentation im Web finden, die die mail_options Parameter spezifiziert! Ich habe das erfolglos versucht: smtp.sendmail (from_addr, to_addr, msg [, mail_options = [Priorität = "hoch"]]) – Sarah92

+0

@SarahAddis [Die Dokumente] (http://docs.python.org/library/smtplib .html # smtplib.SMTP.sendmail) gibt klar an, dass "der Aufrufer eine Liste von ESMTP-Optionen (wie 8bitmime) übergeben kann, die in MAIL FROM-Befehlen als mail_options verwendet werden. ESMTP-Optionen (z. B. DSN-Befehle), die verwendet werden sollen Alle RCPT-Befehle können als rcpt_options übergeben werden. " Sie müssen in den RFCs nachsehen, welche ESMPT-Optionen und RCPT-Optionen verfügbar sind. – glglgl

Antwort

15

Priorität ist nur eine Frage des E-Mail-Inhalts (um genau zu sein, Header-Inhalt). Siehe here.

Die nächste Frage wäre, wie man das in eine E-Mail schreibt.

Das hängt vollständig davon ab, wie Sie diese E-Mail erstellen. Wenn Sie das email Modul verwenden, würden Sie es auf diese Weise tun:

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

und dann verwenden, mit

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

Wie funktioniert das "Flag" beim Senden einer Mail? Ich habe das oben mit einer zusätzlichen Zeile als "m ['Flag'] = '1'" versucht. Ich habe keinen Fehler bekommen, aber die Flagge war nicht auf. – zingy

+1

@zingy verwenden Priorität 2, es wird Ihre Flagge geben – Busturdust

+0

@Busturdust Mit der Priorität '2' erschien nur Ausrufezeichen, aber die Flagge war nicht aktiviert. – zingy