Frage

Ich versuche, einen Entwurf für E-Mail über IMAP in einem Ordner zu speichern, auf MS Exchange ausgeführt wird. Alles in Ordnung, außer dass Bcc-Empfänger wird nicht in dem Entwurf auf dem Server gespeichert gezeigt. Bcc-Empfänger auch nicht erhält die E-Mail, wenn ich es mit MS Outlook senden. Wenn ich die Nachricht wieder mit Python zu lesen, nachdem ich es auf dem Server gespeichert sind, kann ich die Bcc im Entwurf sehen.

Der folgende Python-Code reproduziert dieses Verhalten:

import imaplib 
import time 
from email.MIMEMultipart import MIMEMultipart 
from email.MIMEText import MIMEText 

message = MIMEMultipart() 
message['Subject'] = 'Test Draft' 
message['From'] = 'test@test.net' 
message['to'] = 'test@test.com' 
message['cc'] = 'testcc@test.com' 
message['bcc'] = 'testbcc@test.com' 
message.attach(MIMEText('This is a test.\n')) 

server= imaplib.IMAP4('the.ser.ver.ip') 
server.login('test', 'test') 
server.append("Drafts" 
              ,'\Draft' 
              ,imaplib.Time2Internaldate(time.time()) 
              ,str(message)) 
server.logout() 

Wenn ich diesen Code ausführen, wird ein Entwurf in den Draft-Ordner auf dem Exchange Server gespeichert. Aber wenn ich in dem Entwurf mit MS Outlook aus, es enthält nicht den bcc Empfänger (message['bcc'] = 'testbcc@test.com'). Message, to, from, cc ok, kein Fehler.

Wenn ich Entwürfe herunterladen, die bereits eine bcc von einem Exchange-Ordnern sind, kann ich sehen, auch die bcc. Nur Upload für mich nicht funktioniert.

Jede Hilfe sehr geschätzt. Vielen Dank. BTW, MAPI ist keine Option.

Aktualisieren : Danke. X-Receiver nicht für mich arbeiten. Was mit einem IMAP-Ordner in Outlook herum spielen, bekam ich ein interessantes Ergebnis. Wenn ich den Entwurf über die IMAP-Ordner in Outlook zugreifen, sehe ich das bcc. Aber wenn ich es über die MAPI-Ordner zugreifen, ich sehe es nicht. spielt ein wenig um, dass mit.

Fazit : Dank für die Eingabe. Eigentlich funktioniert der Code nur in Ordnung. Siehe unten für die Antwort, die ich gefunden.

War es hilfreich?

Lösung

Eigentlich funktioniert der Code nur in Ordnung. Es schafft die richtige E-Mail mit den richtigen Header einschließlich bcc.

Wie funktioniert der Mail-Client bcc angezeigt werden?

Die Mail-Client (zB Python oder MS Outlook über IMAP oder MAPI in meinem Fall) entscheidet, ob und wie bcc-Header angezeigt werden soll. Outlook beispielsweise nicht angezeigt bcc-Header von einem IMAP-Ordner. Dies ist ein Feature zu bcc Empfänger voneinander zu verstecken, wo sie von der Post nicht weg, bevor abgestreift haben (es ist nicht klar, aus dem Standard, ob ein bcc Empfänger darf alle anderen bcc Empfänger oder nicht, um zu sehen, finden Sie unter Wikipedia ).

Wer bcc Griffe auf eine E-Mail zu senden?

Nehmen wir nun an, dass wir eine Nachricht in einem Mail-Client erstellt haben und es in einem IMAP oder MAPI-Ordner gespeichert. Der Server die IMAP / MAPI-Ordner bereitstellt verläßt der Entwurf unverändert. Was passiert mit den bcc-Header auf die E-Mail zu senden ist die Umsetzung abhängig und könnten beide hängen von dem Mail-Client und die Mail (zB MS Exchange Server in meinem Fall) Transfer Agent. Auf den Punkt gebracht, nicht einverstanden sind Leute, ob die E-Mail-Client oder der Mail Transfer Agent zum Entfernen von bcc-Header reponsible ist. Es scheint jedoch so zu sein, dass eine Mehrheit der Entwickler der Meinung ist, dass es das Geschäft des Mail-Client mit der Mail Transfer Agent die E-Mail nicht berühren (z MS Exchange, MS SMTP, Exim, Openwave). In diesem Fall sendet der Mail Transfer Agent die E-Mail an den Empfänger wie in der RCPT TO: der SMTP Kommunikation und verlässt die E-Mail ansonsten unverändert. Einige andere Mail-Übertragungsmittel abzustreifen bcc-Header von E-Mails jedoch (z send, Lotus Notes). Eine sehr gründliche Diskussion auf der Exim-Mailingliste zu finden starten hier .

Im Fall von MS Outlook und MS Exchange, MS Outlook sendet nie bcc (aber sendet einzelne E-Mails für jeden bcc Empfänger) und MS Exchange berührt nicht den E-Mail-Header, sondern sendet die vollständige E-Mail (ggf. einschließlich Bcc-Empfänger) zu der Empfänger definierte in RCPT TO:.

Fazit

Ich verstand nicht, dass es keine garantierte Verhalten für bcc ist, und dass in der Regel der Kunde behandelt bcc. Ich werde meinen Python-Code in einer Schleife über bcc Empfänger neu zu schreiben und eine E-Mail für jeden bcc Empfänger erzeugen.

Andere Tipps

Es könnte auf diese Weise durch Design sein. Schließlich ist der ganze Sinn der bcc, dass der Empfänger voneinander versteckt ist.

Ich verstehe, dass Sie die E-Mail senden, nur um es zu speichern. Aber meine Vermutung ist, dass Exchange-interne Regeln treten in, wenn die Nachricht in den Ordner IMAP.appended wird, wodurch das bcc Feld abgestreift werden.

Natürlich, wenn Nachrichten in einen Ordner mit Outlook das bcc Feld gespeichert werden, ist nicht abgestreift. Aber ich denke, Ausblick kommuniziert mit dem Exchange einige interne mechanizm mit MAPI (?).

Alle oben ist nur Mutmaßungen.

Etwas Spaß Sie könnten versuchen:

  • In einem leeren Outlook / MAPI-Profil, ein IMAP-Konto erstellen. Stellen Sie es bis zu speichern, Entwürfe und Gesendete Objekte auf dem Exchange-Server.
  • Prüfen Sie, ob Outlook IMAP korrekt bcc der Entwürfe speichern.

habe ich versucht, die über IMAP auf Exchange verbunden, um die Evolution-E-Mail-Client oben. Mit Ausblick (die normale Art und Weise verbunden ist), dann hatte ich einen Blick in Entwürfe und Gesendete Objekte. Das bcc Feld wurde an beiden Orten fehlt.

Ich glaube das ist meine Theorie unterstützt.

Versuchen Sie, diese alternative Version des BCC-Header Einstellung:

X-Receiver: someguy@gmail.com

Wechsel insbesondere behandeln wird dies wie ein BCC, wenn Sie es senden. Aber ich wette, es wird nicht abstreifen, wenn Sie über IMAP schreiben. Sie können durch Duplizieren Sie diese Zeile mehr als ein BCC Empfänger umfassen.

Dies ist ein komplettes Hack, offensichtlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top