Problem mit imap-fetchstructure, Mail-Codierung
Hallo,
ich möchte mit meiner Homepage regelmäßig ein eMail-Postfach abrufen, und die Mails auslesen und in eine Datenbank speichern. Das sollte ein eigenes kleines Ticketsystem sein. An sich funktioniert das ganze Script auch - Absendername, Mail-Adresse, Betreff und Text werden korrekt zugehörig ausgelesen - nur das mit der Mail-Codierung fläuft schief.
Mit imap_qprint($content); und imap_base64($content); kann ich die Mails einzeln korrekt darstellen. Ich weiß also, wie die Mails entschlüsselt werden. Das ist nicht mein Problem.
Aber die korrekte Bedingung trifft nicht zu.
Die Mail-Struktur wird aufgerufen mit $struct = imap_fetchstructure($mailbox, $i); und das funktioniert ja auch alles.
Und mit $encoding_id = $struct->encoding; sollte man dann die Verschlüsselungsart herausfinden:
$struct = imap_fetchstructure($mailbox, $i);
$encoding_id = $struct->encoding;
Und genau da liegt das Problem.
Die eine Mail wird mit imap_qprint korrekt dargestellt, die andere Mail wird mit imap_base64 korrekt dargestellt. Beide Mails sollen aber angeblich die $encoding_id 0 haben. Und genau das kann nicht sein. Jemand der sich hier auskennt, weiß dass es jeweils die Id 4 und 3 haben müsste.
Also wieso gibt $struct->encoding; eine falsche ID zurück, wenn alle anderen Werte korrekt angezeigt werden?
Das ganze sollte dann so ausgewertet werden:
if($encoding_id =="3") {
$content = imap_base64($content);
$content = utf8_decode($content); //formatiert umlaute
} elseif($encoding_id =="4") {
$content = imap_qprint($content);
} else {
$content;
}
Das funktioniert aber erst, wenn er die korrekte ID ermittelt.
Und weil das nicht funktioniert hat, habe ich noch Beispiele gefunden mit if(imap_base64($content) { ... } elseif..
Das funktioniert aber genauso wenig, weil er dann die erste Bedingung imap_base64 auch dann ausführt, wenn es sich um eine imap_qprint-Verschlüsselte Mail handelt. Also auch dann führt er die falsche Bedingung aus.
Jetzt bin ich ratlos und wüsste nicht, wie ich die Mails korrekt entschlüsseln sollte.
Viele Grüße
Matthias
ich möchte mit meiner Homepage regelmäßig ein eMail-Postfach abrufen, und die Mails auslesen und in eine Datenbank speichern. Das sollte ein eigenes kleines Ticketsystem sein. An sich funktioniert das ganze Script auch - Absendername, Mail-Adresse, Betreff und Text werden korrekt zugehörig ausgelesen - nur das mit der Mail-Codierung fläuft schief.
Mit imap_qprint($content); und imap_base64($content); kann ich die Mails einzeln korrekt darstellen. Ich weiß also, wie die Mails entschlüsselt werden. Das ist nicht mein Problem.
Aber die korrekte Bedingung trifft nicht zu.
Die Mail-Struktur wird aufgerufen mit $struct = imap_fetchstructure($mailbox, $i); und das funktioniert ja auch alles.
Und mit $encoding_id = $struct->encoding; sollte man dann die Verschlüsselungsart herausfinden:
$struct = imap_fetchstructure($mailbox, $i);
$encoding_id = $struct->encoding;
Und genau da liegt das Problem.
Die eine Mail wird mit imap_qprint korrekt dargestellt, die andere Mail wird mit imap_base64 korrekt dargestellt. Beide Mails sollen aber angeblich die $encoding_id 0 haben. Und genau das kann nicht sein. Jemand der sich hier auskennt, weiß dass es jeweils die Id 4 und 3 haben müsste.
Also wieso gibt $struct->encoding; eine falsche ID zurück, wenn alle anderen Werte korrekt angezeigt werden?
Das ganze sollte dann so ausgewertet werden:
if($encoding_id =="3") {
$content = imap_base64($content);
$content = utf8_decode($content); //formatiert umlaute
} elseif($encoding_id =="4") {
$content = imap_qprint($content);
} else {
$content;
}
Das funktioniert aber erst, wenn er die korrekte ID ermittelt.
Und weil das nicht funktioniert hat, habe ich noch Beispiele gefunden mit if(imap_base64($content) { ... } elseif..
Das funktioniert aber genauso wenig, weil er dann die erste Bedingung imap_base64 auch dann ausführt, wenn es sich um eine imap_qprint-Verschlüsselte Mail handelt. Also auch dann führt er die falsche Bedingung aus.
Jetzt bin ich ratlos und wüsste nicht, wie ich die Mails korrekt entschlüsseln sollte.
Viele Grüße
Matthias
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 220913
Url: https://administrator.de/contentid/220913
Ausgedruckt am: 28.03.2024 um 14:03 Uhr
1 Kommentar