Signatur
Beschreibung
mailparse_determine_best_xfer_encoding() analysiert den Inhalt eines geöffneten Datei- oder Stream-Ressource und bestimmt, welche MIME-Transfer-Kodierung am besten für diesen Inhalt geeignet ist. Das Ergebnis ist ein String wie 7bit, 8bit, quoted-printable oder base64, der angibt, wie der Inhalt beim Versand in einer E-Mail kodiert werden sollte.
Die Funktion liest den kompletten Stream (beginnend von der aktuellen Position) und prüft, welche Zeichen vorhanden sind: Enthält der Inhalt ausschließlich ASCII-Zeichen und keine langen Zeilen, wird 7bit zurückgegeben. Enthält er 8-Bit-Zeichen oder Binärdaten, wird entsprechend 8bit oder base64 empfohlen.
Diese Funktion ist Teil der PECL-Erweiterung mailparse und wird typischerweise verwendet, wenn E-Mails manuell zusammengestellt oder analysiert werden – beispielsweise beim Aufbau von MIME-Teilen oder beim Weiterleiten von Anhängen. Sie hilft dabei, RFC-konforme E-Mails zu erzeugen.
Hinweis: Der Stream-Zeiger wird durch den Lesevorgang verschoben; es kann notwendig sein, ihn anschließend mit rewind() oder fseek() zurückzusetzen, bevor der Stream erneut gelesen wird.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $fp Pflicht | resource | Ein gültiger Datei- oder Stream-Handle, wie er z. B. von fopen() zurückgegeben wird. Der Inhalt dieses Streams wird ab der aktuellen Zeigerposition analysiert. |
Rückgabewert
7bit, 8bit, quoted-printable oder base64. Im Fehlerfall kann false zurückgegeben werden.Beispiele
Transfer-Kodierung für eine Textdatei ermitteln
<?php
// Textdatei öffnen
$fp = fopen('/pfad/zur/textdatei.txt', 'r');
if ($fp === false) {
die('Datei konnte nicht geöffnet werden.');
}
// Beste Transfer-Kodierung ermitteln
$encoding = mailparse_determine_best_xfer_encoding($fp);
echo 'Empfohlene Transfer-Kodierung: ' . $encoding . PHP_EOL;
// Zeiger zurücksetzen, falls Datei danach nochmals gelesen werden soll
rewind($fp);
fclose($fp);
?>
Transfer-Kodierung für eine Binärdatei (z. B. PDF) ermitteln
<?php
// Binärdatei öffnen
$fp = fopen('/pfad/zur/datei.pdf', 'rb');
if ($fp === false) {
die('Datei konnte nicht geöffnet werden.');
}
$encoding = mailparse_determine_best_xfer_encoding($fp);
echo 'Empfohlene Transfer-Kodierung: ' . $encoding . PHP_EOL;
// Stream-Position zurücksetzen
rewind($fp);
// Inhalt lesen und entsprechend kodieren
$inhalt = stream_get_contents($fp);
if ($encoding === 'base64') {
$kodiert = base64_encode($inhalt);
echo 'Inhalt wurde Base64-kodiert (' . strlen($kodiert) . ' Bytes).' . PHP_EOL;
}
fclose($fp);
?>
// Wichtig · Fallstricke
Voraussetzung: Die Funktion ist nur verfügbar, wenn die PECL-Erweiterung mailparse installiert und aktiviert ist. Sie ist nicht Teil der PHP-Kerninstallation.
Stream-Position: Nach dem Aufruf befindet sich der Datei-Zeiger am Ende des Streams. Vor einem erneuten Lesen muss rewind($fp) oder fseek($fp, 0) aufgerufen werden, da sonst kein Inhalt mehr gelesen wird.
RFC-Konformität: Die ermittelte Kodierung richtet sich nach den MIME-Standards (RFC 2045). Die Verwendung der empfohlenen Kodierung stellt sicher, dass E-Mails von allen konformen Mail-Servern und -Clients korrekt verarbeitet werden können.