Start · Sprachen · PHP · Referenz · imap_binary

imap_binary

Funktion

Konvertiert einen 8-Bit-String in einen Base64-kodierten String.

seit PHP 4.0.0 Kategorie: http

Signatur

imap_binary(string $string): string

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

Typ
string
Beschreibung
Gibt den Base64-kodierten String zurück, wobei die Ausgabe gemäß RFC 2045 in Zeilen von je 76 Zeichen (getrennt durch \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;
SGFsbG8gV2VsdCEgRGllcyBpc3QgZWluIFRlc3QgbWl0IDgtQml0LVplaWNoZW46IMOk w7bDvA==

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.