Start · Sprachen · PHP · Referenz · imap_qprint

imap_qprint

Funktion

Dekodiert einen Quoted-Printable-kodierten String und gibt den entsprechenden 8-Bit-String zurück.

seit PHP 4.0.0 Kategorie: http

Signatur

imap_qprint(string $string): string

Beschreibung

imap_qprint() konvertiert einen im Quoted-Printable-Format kodierten String in einen gewöhnlichen 8-Bit-String. Quoted Printable (QP) ist ein Übertragungsformat aus dem E-Mail-Bereich (RFC 2045), das sicherstellt, dass Binär- oder Sonderzeichendaten über 7-Bit-Kanäle übertragen werden können. Dabei werden nicht-ASCII-Zeichen als =XX dargestellt, wobei XX der hexadezimale Bytewert ist.

Typischerweise tritt Quoted-Printable-Kodierung bei E-Mail-Headern und -Body-Teilen auf, die über IMAP abgerufen werden. Mit imap_qprint() lassen sich solche kodierten Inhalte wieder in lesbare, native PHP-Strings umwandeln, bevor sie verarbeitet, gespeichert oder ausgegeben werden.

Die Funktion gehört zur IMAP-Erweiterung, ist jedoch auch dann nützlich, wenn man lediglich QP-kodierte Texte – unabhängig von einer aktiven IMAP-Verbindung – dekodieren möchte. Die inverse Operation (8-Bit nach QP) übernimmt imap_8bit().

Parameter

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

Rückgabewert

Typ
string
Beschreibung
Gibt den dekodieren 8-Bit-String zurück. Enthält der Eingabe-String kein gültiges QP-Encoding, wird er weitgehend unverändert zurückgegeben.

Beispiele

Einfaches Dekodieren eines Quoted-Printable-Strings

<?php
// Typischer QP-kodierter Text aus einer E-Mail
$qpEncoded = 'Sehr geehrte Damen und Herren,=0A=0Adies ist ein Test.=0A=0AMit freundlichen Gr=C3=BC=C3=9Fen';

$decoded = imap_qprint($qpEncoded);
echo $decoded;
Sehr geehrte Damen und Herren, dies ist ein Test. Mit freundlichen Grüßen

Dekodierung eines per IMAP abgerufenen E-Mail-Bodys

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

if ($imap) {
    // Erste Nachricht abrufen
    $structure = imap_fetchstructure($imap, 1);

    // Prüfen ob Encoding = Quoted Printable (Wert 4)
    if (isset($structure->encoding) && $structure->encoding === 4) {
        $rawBody = imap_fetchbody($imap, 1, 1);
        $decodedBody = imap_qprint($rawBody);
        echo htmlspecialchars($decodedBody);
    }

    imap_close($imap);
}

// Wichtig · Fallstricke

Deprecation-Hinweis: Ab PHP 8.4 ist die IMAP-Erweiterung als veraltet markiert und wird in einer zukünftigen PHP-Version entfernt. Für neue Projekte empfiehlt es sich, auf alternative Bibliotheken wie ddeboer/imap oder andere IMAP-Clients umzusteigen.

Wenn das Encoding eines IMAP-Nachrichtenteils bekannt ist, sollte zunächst imap_fetchstructure() genutzt werden, um den Encoding-Typ zu prüfen (Wert 4 entspricht Quoted Printable), bevor imap_qprint() angewendet wird. Andernfalls kann es zu fehlerhaften Ausgaben kommen, wenn der Body z. B. Base64-kodiert ist.