Start · Sprachen · PHP · Referenz · mailparse_msg_free

mailparse_msg_free

Funktion

Gibt eine durch <code>mailparse_msg_create()</code> oder <code>mailparse_msg_parse_file()</code> erzeugte MIME-Ressource frei.

seit PHP 4.1.0 Kategorie: http

Signatur

mailparse_msg_free(resource $mimemail): bool

Beschreibung

mailparse_msg_free() gibt den Speicher einer MIME-Ressource explizit frei, die zuvor mit mailparse_msg_create() oder mailparse_msg_parse_file() erzeugt wurde. Da PHP-Ressourcen grundsätzlich vom Garbage Collector verwaltet werden, ist ein expliziter Aufruf dieser Funktion nicht immer zwingend notwendig, gilt jedoch als gute Praxis, wenn große E-Mail-Nachrichten verarbeitet werden und der Speicher zeitnah freigegeben werden soll.

Insbesondere bei der Verarbeitung vieler E-Mails in einer Schleife – etwa bei der Analyse eines Postfachs – verhindert der explizite Aufruf von mailparse_msg_free(), dass unnötig viele Ressourcen gleichzeitig im Speicher gehalten werden und reduziert damit den Speicherdruck auf den PHP-Prozess.

Nach dem Aufruf von mailparse_msg_free() darf die übergebene Ressource nicht mehr verwendet werden. Jeder weitere Zugriff führt zu einer PHP-Warnung, da die Ressource ungültig ist.

Parameter

Name Typ Default Beschreibung
$mimemail Pflicht resource Eine gültige MIME-Ressource, die zuvor mit mailparse_msg_create() oder mailparse_msg_parse_file() erstellt wurde.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false wenn die übergebene Ressource ungültig ist oder die Freigabe fehlschlägt.

Beispiele

Einfaches Parsen und Freigeben einer E-Mail

<?php
// Eine E-Mail-Datei parsen
$mime = mailparse_msg_parse_file('/path/to/email.eml');

if ($mime === false) {
    echo 'Fehler beim Parsen der E-Mail.';
    exit;
}

// Struktur der MIME-Nachricht auslesen
$structure = mailparse_msg_get_structure($mime);
var_dump($structure);

// Ressource explizit freigeben
mailparse_msg_free($mime);
echo 'Ressource erfolgreich freigegeben.';
array(1) { [0]=> string(3) "1" } Ressource erfolgreich freigegeben.

Mehrere E-Mails in einer Schleife verarbeiten

<?php
$emailFiles = glob('/var/mail/inbox/*.eml');

foreach ($emailFiles as $file) {
    $mime = mailparse_msg_parse_file($file);

    if ($mime === false) {
        echo "Fehler beim Parsen: $file\n";
        continue;
    }

    // Teile der MIME-Nachricht auslesen
    $parts = mailparse_msg_get_structure($mime);
    echo "Datei: $file — Teile: " . count($parts) . "\n";

    // Ressource sofort freigeben, um Speicher zu schonen
    mailparse_msg_free($mime);
}
Datei: /var/mail/inbox/mail1.eml — Teile: 2 Datei: /var/mail/inbox/mail2.eml — Teile: 3

// Wichtig · Fallstricke

Hinweis zur PECL-Erweiterung: mailparse_msg_free() gehört zur PECL-Erweiterung mailparse, die separat installiert werden muss. Sie ist nicht standardmäßig in PHP enthalten.

Ressource nach Freigabe: Nach dem Aufruf von mailparse_msg_free() ist die Variable, die die Ressource hält, ungültig. Jede weitere Verwendung führt zu einer PHP-Warnung (supplied resource is not a valid mailparse_mail_object resource). Es empfiehlt sich, die Variable anschließend auf null zu setzen oder den Gültigkeitsbereich zu verlassen.