Start · Sprachen · PHP · Referenz · imap_fetchtext

imap_fetchtext

Funktion

Alias von <code>imap_body()</code> — liest den Nachrichtentext einer E-Mail aus einem geöffneten IMAP-Postfach.

seit PHP 4.0.0 Kategorie: http

Signatur

imap_fetchtext(IMAP\Connection $imap, int $message_num, int $flags = 0): string|false

Beschreibung

imap_fetchtext() ist ein direkter Alias der Funktion imap_body() und verhält sich in jeder Hinsicht identisch. Sie liest den Textkörper (Body) einer einzelnen Nachricht aus einer über imap_open() geöffneten IMAP-Verbindung.

Der Rückgabewert enthält den rohen (undecodierten) Nachrichtentext. Handelt es sich um eine mehrteilige Nachricht (z. B. Multipart-E-Mail), wird der gesamte Body zurückgegeben, ohne die einzelnen MIME-Teile zu trennen. Für strukturiertes Parsen eignet sich imap_fetchstructure() in Kombination mit imap_fetchbody() besser.

Da imap_fetchtext() lediglich ein Alias ist, empfiehlt es sich, direkt imap_body() zu verwenden, um die Abhängigkeit von einem möglicherweise in zukünftigen PHP-Versionen entfernten Alias zu vermeiden.

Über den Parameter $flags kann z. B. mit FT_UID eine UID anstelle einer fortlaufenden Sequenznummer als Nachrichtenreferenz verwendet werden, oder mit FT_PEEK verhindert werden, dass die Nachricht als gelesen markiert wird.

Parameter

Name Typ Default Beschreibung
$imap Pflicht IMAP\Connection Eine aktive IMAP-Verbindungsinstanz, die zuvor mit imap_open() geöffnet wurde.
$message_num Pflicht int Die Sequenznummer der Nachricht im Postfach (oder die UID, wenn FT_UID als Flag gesetzt ist).
$flags int 0 Optionale Bitmaske aus folgenden Konstanten: FT_UID (Nachrichtennummer ist eine UID), FT_PEEK (Nachricht nicht als gelesen markieren), FT_INTERNAL (rohe Zeichenkette ohne Zeilenumbruch-Konvertierung zurückgeben).

Rückgabewert

Typ
string|false
Beschreibung
Gibt den Nachrichtentext als Zeichenkette zurück, oder false bei einem Fehler (z. B. ungültige Nachrichtennummer oder geschlossene Verbindung).

Beispiele

Nachrichtentext einer E-Mail auslesen

<?php
$imap = imap_open('{imap.example.com:993/imap/ssl}INBOX', 'benutzer@example.com', 'passwort');

if ($imap === false) {
    die('Verbindung fehlgeschlagen: ' . imap_last_error());
}

// Nachrichtentext der ersten Nachricht abrufen
$body = imap_fetchtext($imap, 1);

if ($body !== false) {
    echo "Nachrichtentext:\n";
    echo $body;
} else {
    echo 'Fehler beim Abrufen: ' . imap_last_error();
}

imap_close($imap);
Nachrichtentext: Dies ist der Inhalt der ersten E-Mail im Postfach.

Nachricht per UID abrufen ohne als gelesen zu markieren

<?php
$imap = imap_open('{imap.example.com:993/imap/ssl}INBOX', 'benutzer@example.com', 'passwort');

if ($imap === false) {
    die('Verbindung fehlgeschlagen: ' . imap_last_error());
}

$uid = 12345; // Bekannte UID der Nachricht

// FT_UID: Nachrichtennummer als UID interpretieren
// FT_PEEK: Nachricht nicht als gelesen markieren
$body = imap_fetchtext($imap, $uid, FT_UID | FT_PEEK);

if ($body !== false) {
    echo htmlspecialchars($body);
} else {
    echo 'Fehler: ' . imap_last_error();
}

imap_close($imap);

// Wichtig · Fallstricke

Alias-Warnung: imap_fetchtext() ist ein Alias von imap_body(). Aliasse können in zukünftigen PHP-Versionen ohne Vorwarnung entfernt werden. Es wird empfohlen, stattdessen direkt imap_body() zu verwenden.

IMAP-Erweiterung: Ab PHP 8.1 gibt imap_open() eine IMAP\Connection-Instanz zurück (zuvor eine Ressource). Stellen Sie sicher, dass die IMAP-Erweiterung (ext-imap) installiert und aktiviert ist.

Sicherheit: Geben Sie den zurückgegebenen Nachrichtentext niemals unbereinigt im Browser aus — verwenden Sie htmlspecialchars(), um XSS-Angriffe zu verhindern, falls der Inhalt im HTML-Kontext gerendert wird.