2015-05-28 8 views
5

Ich sende E-Mails an Kontaktlisten basierend auf Vorlagen mit Mandrill. Ich möchte verfolgen, ob die Kontakte auf meine E-Mail geantwortet haben, und ich möchte überprüfen, ob die Message-Id meiner gesendeten E-Mails im Kopfzeilenfeld In-Reply-To der neuen Nachrichten angezeigt wird.Meldungs-ID mit Mandrill für Massen-E-Mails setzen

Das Problem ist, dass ich die Message-Id manuell erzeugen und einstellen muss, da Mandrill mir nur ihre interne _id gibt. Da ich jedoch gleichzeitig E-Mails an verschiedene Kontakte sende, setze ich preserve_recipients auf false. Aber dann kann ich nur eine Message-Id setzen, die daher nicht global eindeutig wird. Hier

ist ein Beispiel JSON, die ich schicke:

{ 
"from_email": "[email protected]", 
"from_name": "Its Me", 
"headers": {"Message-Id": ["<[email protected]>"]}, 
"subject": "Thesubject", 
"text": "Thebody", 
"to": [ 
    { 
     "email": "[email protected]", 
     "name": "John", 
     "type": "to" 
    }, 
    { 
     "email": "[email protected]", 
     "name": "Patrick", 
     "type": "to" 
    } 
], 
"preserve_recipients": false 

}

In diesem Fall werden zwei Nachrichten gesendet werden, aber sie werden die gleiche Message-Id haben. Wenn ich es nicht einstelle, wird Mandrill automatisch einen zuweisen, aber dann kann ich es nicht abrufen.

Irgendeine Idee was ich tun könnte? Vielleicht ist meine ganze Vorgehensweise falsch ...

Antwort

3

landete ich alle Empfänger Looping über und eine neue Message-Id bei jeder Iteration zu erzeugen und zu einer Zeit, eine E-Mail senden. Wahrscheinlich nicht optimal, da ich keine Mandrill-Massenfunktion verwende, aber jetzt kann ich die E-Mail-ID speichern.

import email 
import mandrill 

mandrill_client = mandrill.Mandrill('YOUR_MANDRILL_KEY') 

for recipient in recipients: 
    # Generate RFC 2822-compliant Message-ID header 
    message_id = email.Utils.make_msgid() 
    m = { 
     "headers": {"Message-Id": [message_id], 
     "from_email": "[email protected]", 
     "from_name": "Its Me", 
     "subject": "The subject", 
     "text": "The body", 
     "to": [{"email": recipient["email"], 
       "name": recipient["name"], 
       "type": "to"}], 
     "track_clicks": True, 
     "track_opens": True 
    } 
    result = mandrill_client.messages.send(message=m) 
+0

Konnten Sie Ihre 'make_msgid()' Funktion bekanntgeben oder ein kleines Detail über, wie Sie die Nachrichten-ID erstellten? Ich konnte das Format davon in den Dokumenten nicht finden –

+1

Sicher. Es wird mit Hilfe von Pythons integrierter 'email'-Bibliothek und genauer gesagt der [' utils.make_msgid() '] (http://doc.hc2.ch/python-2.7.9-docs-html/library/email. util.html # email.utils.make_msgid) -Funktion, die den [RFC 2822] (http://tools.ietf.org/html/rfc2822.html) -konformen Message-ID-Header erstellt. – Victor

+0

Macht Sinn. Vielen Dank. –

0

Von mandrill documentation können Sie die _id aus dem Rückgabewert der Nachricht abrufen.

doc

+0

Ich weiß, aber diese Information ist nur intern Mandrill und wird verloren gehen, wenn ich die Antwort einer E-Mail erhalten. – Victor

+0

Dann benutze Webhooks, ich benutze sie für mein Mailsystem und sie funktionieren super –

+0

Es scheint eine nützliche Antwort von Mandrill Support zu geben: http://Stackoverflow.com/a/29010839/4940233 –