2013-01-23 2 views
11

Ich habe Header verdächtigen Nachrichten-ID der E-Mail von PHP zu Google Mail-Konto gesendet ist:, was das Problem mit Message-Id in E-Mail von php

Message-Id: <[email protected]> 

Könnten Sie bitte erklären, ist es dieses seltsame Format hat und was SMTPIN_ADDED_MISSING bedeutet hier? Beispiele, die ich im Internet gesehen hatte Format etwas Ähnliches enthalten Domain, sondern in meine Nachrichten-ID enthält es nicht aus irgendeinem Grund:

[email protected] 

ich, dass ich diesen Header nicht denken gesetzt in Zend_Mail. Was erzeugt diese Header? Sehen Sie Probleme mit diesem Header?

Antwort

6

Google SMTP generiert es, wenn es fehlt. Dieser Header muss vom ersten SMTP-Server festgelegt werden. Sie generieren es also nicht - Google tut es. Es wird verwendet, um mehrfache Zustellung zu verhindern und verwandte Nachrichten miteinander zu verknüpfen.

Es ist nicht erforderlich, Nachrichten-ID-Header zu setzen, aber es ist wie eine gute Übung für die meisten (aber nicht alle, nur konfiguriert) SMTP zu hinzufügen (möglicherweise beheben) diese Überschrift. Um die Erzeugung dieses Headers durch andere zu vermeiden, können Sie diese selbst generieren.

+1

Soll ich es von PHP gesetzt oder Server smpt Server sollte sie hinzufügen? Sollte message_id Domain des Servers enthalten, der eine Adresse wie folgt sendet: [email protected]? – Oleg

+0

Meinst du, dass, wenn es keine Nachrichten-ID in gesendeter E-Mail gibt, eine empfangene E-Mail sie erzeugt und zu der Nachricht hinzufügt? – Oleg

+0

SMTP-Server generiert es, wenn es nicht existiert. Es ist nicht notwendig, aus PHP zu generieren. Es muse @ domain Teil einschließen. Empfehlungen http://www.jwz.org/doc/mid.html – clover

13

Ein ordnungsgemäßer Client für ausgehende E-Mails sollte den Header Message-ID generieren, wenn die E-Mail gesendet wird. Google ist "nett" und generiert es für Sie, wenn die Nachricht das E-Mail-System durchläuft, die meisten jedoch nicht. Die meisten Spamfilter nehmen diesen fehlenden Header als Hinweis, dass die Nachricht eher Spam ist. Jede fehlerhafte oder fehlende Kopfzeile wird zur "Spam-Punktzahl" hinzugefügt.

Es ist nicht schwierig zu erzeugen, alles, was erforderlich ist, ist, dass es pro-Nachricht eindeutig ist:

$message-id = time() .'-' . md5($sender . $recipient) . '@' $_SERVER['SERVER_NAME']; 

Oder

$message-id = time() .'-' . md5($sender . $recipient) . '@yourdomain.com'; 

Gibt:

[email protected] 
+0

Meinst du, dass die Abwesenheit von Message_Id die Wahrscheinlichkeit erhöht, zu Spam zu gehen? – Oleg

+0

Könnte message_id Domäne von smpt Server enthalten, die E-Mails sendet? – Oleg

+0

Nicht smpt Server hinzufügen message_id automatisch, sollte es von der Anwendung hinzugefügt werden, oder? – Oleg

0

Ich bin Verwenden derselben MessageId zum Verfolgen der ausgetauschten Nachrichten.

Ich fixiere die Meldungs ​​mit:

$mail->MessageID =sprintf('<%[email protected]%s>', $myMessageID, 'myserver');