Aktueller Standort: Startseite> Neueste Artikel> Wie kombinieren Sie MB_DECODE_MIMEHEHER- und MailParse -Erweiterungen, um die Genauigkeit der E -Mail -Parsen zu verbessern?

Wie kombinieren Sie MB_DECODE_MIMEHEHER- und MailParse -Erweiterungen, um die Genauigkeit der E -Mail -Parsen zu verbessern?

gitbox 2025-09-12
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Es ist hier irrelevant PHP Codebeispiel,Hat nichts mit dem Text zu tun</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">dummyFunction</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">"Dieser Code hat nichts mit dem Inhalt des Textes zu tun"</span></span><span>;
}

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">dummyFunction</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

Wie man kombiniert mb_decode_mimeheader Und mailparse Erweiterungen zur Verbesserung der Genauigkeit der E -Mail -Parsen?

Bei der Bearbeitung von E -Mail -Inhalten,Die Codierungsformate von E -Mail -Header sind vielfältig und komplex,Besonders wenn es um nicht geht ASCII Charakterzeit,Es ist schwer zu analysieren。PHP Bietet mehrere Erweiterungen zur Lösung von E -Mails,Dieser Artikel konzentriert sich darauf, wie man kombiniert `mb_decode_mimeheader` Und `mailparse` Erweitert,提升邮件解析的准确性Und鲁棒性。

eins、Hintergrundeinführung

E -Mail -Inhalte werden normalerweise durch mehrere Ebenen kodiert,Zum Beispiel MIME Codierung、Base64 Codierung等,邮件头部的字符Codierung也可能是 ISO-</span><span><span class="hljs-number">8859</span></span><span>-</span><span><span class="hljs-number">1</span></span><span>、UTF-</span><span><span class="hljs-number">8</span></span><span>、GBK Verschiedene Formate。`mailparse` Erweitert是 PHP Bereitstellung von Tools speziell zum Parsen von Mailstrukturen,能够提取邮件各个部分的内容Und信息。`mb_decode_mimeheader` Es wird verwendet, um den Mail -Header zu dekodieren MIME Codierung的字符串,Besonders mit Nichts ASCII Teil des Charakters。

zwei、Probleme und Herausforderungen

- Direkt verwenden `mailparse` Beim Extrahieren des E -Mail -Headers,Das Headerfeld ist oft noch MIME Codierung格式,Direkt als solche zeigen `=?UTF-</span><span><span class="hljs-number">8</span></span><span>?B?...?=` bilden,Unfreundliches Lesen。
- 不同邮件客户端对邮件头的Codierung实现存在差异,Verursacht einige E -Mail -Header, um fehlgeschlagene oder verstümmelte Codes zu analysieren。
- Nur verwenden `mb_decode_mimeheader` Bei der Bearbeitung von E -Mail -Headern,Die komplexe Struktur des E -Mail -Körpers und der Anhänge kann nicht analysiert werden。

drei、Kombiniertes Gebrauchsschema

</span><span><span class="hljs-number">1</span></span><span>. verwenden `mailparse` Lösen Sie die Poststruktur

```php
</span><span><span class="hljs-variable">$mime</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mailparse_msg_parse_file</span></span><span>(</span><span><span class="hljs-string">'path/to/email.eml'</span></span><span>);
</span><span><span class="hljs-variable">$structure</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mailparse_msg_get_structure</span></span><span>(</span><span><span class="hljs-variable">$mime</span></span><span>);
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$structure</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$section</span></span><span>) {
    </span><span><span class="hljs-variable">$part</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mailparse_msg_get_part</span></span><span>(</span><span><span class="hljs-variable">$mime</span></span><span>, </span><span><span class="hljs-variable">$section</span></span><span>);
    </span><span><span class="hljs-variable">$info</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mailparse_msg_get_part_data</span></span><span>(</span><span><span class="hljs-variable">$part</span></span><span>);
    </span><span><span class="hljs-comment">// Verfügbar Content-Type, Content-Transfer-Encoding Warten Sie auf Informationen</span></span><span>
}
</span></span>
  1. Dekodieren Sie das Feld E -Mail -Header mit MB_DECODE_MIMEHEHER

Konvertieren Sie nach dem Extrahieren der Felder aus dem E -Mail -Header die Encodierung mit MB_Decode_MimeHeader :

 <span><span><span class="hljs-variable">$rawSubject</span></span><span> = </span><span><span class="hljs-string">"=?UTF-8?B?5rWL6K+V5LiK5Lyg5paH5Lu2?="</span></span><span>;
</span><span><span class="hljs-variable">$decodedSubject</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_decode_mimeheader</span></span><span>(</span><span><span class="hljs-variable">$rawSubject</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$decodedSubject</span></span><span>; </span><span><span class="hljs-comment">// Ausgabe des chinesischen Themas ausgabe</span></span><span>
</span></span>
  1. Beispiel für Kombinationsparnis Prozess

 <span><span><span class="hljs-comment">// Lesen Sie den Original -E -Mail -Inhalt</span></span><span>
</span><span><span class="hljs-variable">$emailContent</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">'path/to/email.eml'</span></span><span>);

</span><span><span class="hljs-comment">// Lösen Sie die Poststruktur</span></span><span>
</span><span><span class="hljs-variable">$mime</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mailparse_msg_parse</span></span><span>(</span><span><span class="hljs-variable">$emailContent</span></span><span>);
</span><span><span class="hljs-variable">$headers</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mailparse_msg_get_part_data</span></span><span>(</span><span><span class="hljs-variable">$mime</span></span><span>)[</span><span><span class="hljs-string">'headers'</span></span><span>] ?? [];

</span><span><span class="hljs-comment">// Dekodieren Sie die Schlüsselfelder im E -Mail -Header</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$headers</span></span><span>[</span><span><span class="hljs-string">'subject'</span></span><span>])) {
    </span><span><span class="hljs-variable">$subject</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_decode_mimeheader</span></span><span>(</span><span><span class="hljs-variable">$headers</span></span><span>[</span><span><span class="hljs-string">'subject'</span></span><span>]);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-variable">$subject</span></span><span> = </span><span><span class="hljs-string">''</span></span><span>;
}

</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$headers</span></span><span>[</span><span><span class="hljs-string">'from'</span></span><span>])) {
    </span><span><span class="hljs-variable">$from</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_decode_mimeheader</span></span><span>(</span><span><span class="hljs-variable">$headers</span></span><span>[</span><span><span class="hljs-string">'from'</span></span><span>]);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-variable">$from</span></span><span> = </span><span><span class="hljs-string">''</span></span><span>;
}

</span><span><span class="hljs-comment">// Ausgabe von dekodierten E -Mail -Header -Informationen</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Thema:<span class="hljs-subst">{$subject}</span></span></span><span>\nAus:</span><span><span class="hljs-subst">{$from}</span></span><span>\n";
</span></span>

4. Effekte und Vorteile

  • Verwenden Sie MailParse , um die Gesamtstruktur der E -Mail, einschließlich Text, Anhänge und codierten Informationen, zu verarbeiten, um die umständliche Vernunft zu vermeiden, den Inhalt der E -Mail manuell aufzuteilen.

  • Verwenden Sie MB_DECODE_MIMEHEHER , um den E-Mail-Header zu dekodieren, um die korrekte Anzeige von E-Mail-Header-Informationen in Umgebungen mit mehrsprachigen und mehreren Coden zu gewährleisten, und vermeiden Sie verstümmelte Code.

  • Die Kombination der beiden kann die Genauigkeit und Kompatibilität der E -Mail -Parsen erheblich verbessern.

5. Dinge zu beachten

  • Es ist erforderlich, sicherzustellen, dass die Erweiterungen von Mailparse und Mbstring in der PHP -Umgebung installiert und aktiviert sind.

  • Für einige spezielle Codierungsformate oder äußerst komplexe E -Mails muss die Analysestrategie anhand bestimmter Umstände angepasst werden.

  • Die analysierten Daten sollten sicher verarbeitet werden, um Sicherheitsrisiken wie die E -Mail -Header -Injektion zu vermeiden.

Zusammenfassen

Durch die Kombination der Erweiterungen mb_decode_mimeheader und mailParse kann die Probleme verschiedener Codierungen und komplexer Strukturen im E -Mail -Parsing -Prozess effektiv lösen, die Parsinggenauigkeit von E -Mail -Headern und Inhalten verbessern und eine unverzichtbare praktische Lösung für die Bearbeitung von E -Mail -Systemen sind.

 <span></span>