Signatur
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
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);
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.