Start · Sprachen · PHP · Referenz · imap_base64

imap_base64

Funktion

Dekodiert einen Base64-kodierten String und gibt den ursprünglichen Text zurück.

seit PHP 4.0.0 Kategorie: http

Signatur

imap_base64(string $string): string

Beschreibung

imap_base64() dekodiert einen Base64-kodierten String und liefert den ursprünglichen Klartext zurück. Die Funktion ist Teil der IMAP-Erweiterung und wird typischerweise beim Verarbeiten von E-Mail-Inhalten verwendet, da E-Mail-Texte und -Anhänge häufig im Base64-Format kodiert übertragen werden.

Intern verhält sich imap_base64() identisch zu base64_decode(). Sie wurde als Teil der IMAP-Erweiterung eingeführt, um beim Parsen von MIME-Teilen einer E-Mail direkt eingesetzt werden zu können, ohne auf eine separate Funktion wechseln zu müssen.

Die Funktion eignet sich überall dort, wo Base64-kodierte Daten entschlüsselt werden sollen – sei es beim Lesen von E-Mail-Anhängen, eingebetteten Bildern (Inline-Attachments) oder verschlüsselten Headern. Für reine Web-Anwendungen ohne E-Mail-Bezug ist base64_decode() die direktere Wahl.

Parameter

Name Typ Default Beschreibung
$string Pflicht string Der Base64-kodierte Eingabe-String, der dekodiert werden soll.

Rückgabewert

Typ
string
Beschreibung
Gibt den dekodierten Klartext als String zurück. Bei ungültigen Base64-Zeichen im Eingabe-String werden diese stillschweigend ignoriert.

Beispiele

Einfaches Dekodieren eines Base64-Strings

<?php
$encoded = 'SGVsbG8gV2VsdCE=';
$decoded = imap_base64($encoded);
echo $decoded;
Hello Welt!

Dekodieren eines Base64-kodierten E-Mail-Textkörpers

<?php
// Verbindung zum IMAP-Server herstellen
$mailbox = imap_open('{imap.example.com:993/imap/ssl}INBOX', 'user@example.com', 'geheim');

if ($mailbox) {
    // Erste E-Mail abrufen
    $structure = imap_fetchstructure($mailbox, 1);
    $rawBody   = imap_fetchbody($mailbox, 1, '1');

    // Prüfen ob der Körper Base64-kodiert ist (encoding = 3)
    if (isset($structure->parts[0]) && $structure->parts[0]->encoding === 3) {
        $decodedBody = imap_base64($rawBody);
        echo $decodedBody;
    } elseif ($structure->encoding === 3) {
        // Einteilige E-Mail
        $decodedBody = imap_base64($rawBody);
        echo $decodedBody;
    }

    imap_close($mailbox);
}

// Wichtig · Fallstricke

Sicherheitshinweis: Ausgaben, die aus dekodiertem E-Mail-Inhalt stammen, sollten vor der Anzeige im Browser stets mit htmlspecialchars() oder strip_tags() bereinigt werden, um Cross-Site-Scripting (XSS) zu verhindern.

Hinweis zur Erweiterung: imap_base64() ist funktional identisch mit base64_decode(). Die IMAP-Erweiterung muss beim Kompilieren oder als PHP-Modul aktiviert sein, damit diese Funktion verfügbar ist. Ohne E-Mail-Kontext ist base64_decode() die bevorzugte Alternative, da sie keine externe Erweiterung erfordert.

Ungültige Zeichen im Eingabe-String werden ignoriert – es erfolgt keine Fehlermeldung. Bei kritischen Anwendungen empfiehlt es sich, die Eingabe vorab auf gültige Base64-Zeichen zu prüfen.