Signatur
Beschreibung
imap_binary() kodiert einen beliebigen 8-Bit-String als Base64 und gibt das Ergebnis als String zurück. Die Funktion entstammt der IMAP-Erweiterung und ist darauf ausgelegt, binäre Daten (z. B. Datei-Inhalte) für den E-Mail-Versand über IMAP-konforme Protokolle vorzubereiten, da MIME den Base64-Inhaltstyp base64 für Anhänge und Binärdaten vorschreibt.
Im Gegensatz zu base64_encode() bricht imap_binary() die Ausgabe automatisch in Zeilen von je 76 Zeichen um (CRLF), wie es der MIME-Standard (RFC 2045) verlangt. Das macht sie besonders geeignet, wenn Base64-kodierte Daten direkt in einen MIME-Nachrichtenrumpf eingebettet werden sollen.
Für allgemeine Base64-Kodierung ohne Zeilenumbrüche empfiehlt sich dagegen base64_encode(). imap_binary() sollte bevorzugt eingesetzt werden, wenn E-Mail-konforme Ausgaben erforderlich sind oder die Daten über IMAP-Funktionen versendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der zu kodierende 8-Bit-String (z. B. der Inhalt einer Binärdatei oder eines Bildes). |
Rückgabewert
\r\n) umgebrochen wird.Beispiele
Einfache Base64-Kodierung eines Strings
<?php
$original = 'Hallo Welt! Dies ist ein Test mit 8-Bit-Zeichen: äöü';
$encoded = imap_binary($original);
echo $encoded;
Binärdatei für MIME-E-Mail-Anhang kodieren
<?php
// Bilddatei einlesen und Base64-kodiert als MIME-Anhang vorbereiten
$filePath = '/pfad/zur/datei/bild.png';
$fileData = file_get_contents($filePath);
if ($fileData === false) {
die('Datei konnte nicht gelesen werden.');
}
$encoded = imap_binary($fileData);
$mimeAnhang = "Content-Type: image/png; name=\"bild.png\"\r\n"
. "Content-Transfer-Encoding: base64\r\n"
. "Content-Disposition: attachment; filename=\"bild.png\"\r\n\r\n"
. $encoded . "\r\n";
echo $mimeAnhang;
// Wichtig · Fallstricke
Abhängigkeit von der IMAP-Erweiterung: imap_binary() ist Teil der IMAP-Erweiterung (ext/imap), die in vielen Server-Konfigurationen nicht standardmäßig aktiv ist. Prüfe mit extension_loaded('imap'), ob die Erweiterung verfügbar ist, bevor du die Funktion einsetzt.
Zeilenumbrüche: Im Gegensatz zu base64_encode() fügt diese Funktion CRLF-Zeilenumbrüche nach je 76 Zeichen ein, was für direkte Weiterverarbeitung außerhalb von MIME-Kontexten unerwünschte Nebeneffekte haben kann.
Deprecation: Die IMAP-Erweiterung wurde in PHP 8.4 als deprecated markiert. Es wird empfohlen, auf Alternativen wie die php-imap-Bibliothek oder base64_encode() mit manuellen Zeilenumbrüchen (chunk_split(base64_encode($data), 76, "\r\n")) zu wechseln.