Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Ich verwende imap_fetchbody um Dateianhänge in meinen Ticket System zu speichern. Allerdings kommen die Daten da falsch rein. Warum weiß ich nicht... es werden alle Daten die einen zu langen durchgehenden Text haben abgeschnitten und da wird ein = hingepackt. Das darf natürlich nicht sein da die Daten 1:1 gespeichert werden sollen.

Als test habe ich diese Datei versendet (diese Datei ist der Dateianhang als test.txt)

Dies ist ein testttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt


ttsadaSDASDGFDDDDDDDDDDDDASDFASDS;FMXKSFHDCASNMXHALDJCHNCLAFXKHFSUMIFCHASDFXASDFSDAAFCXADFCASDFXASDFSDAFCXADSFCSDFCASXDFSADFCSAFXASDFCASFXADFSDFCASXFSDFCACSFXASDFCSDFCSDXFSDFCSFXSDFVASSHBGFJNGHMJGFBDVHFGCSFAXDEC


TESTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHJJJJJJJJJJJJJJJJJJJJJJJJJJDDDDDDDDDDDDDDDDDDDSSSSSSSSSSSS
Und dies hat imap_fetchbody mir aus gegeben.
Dies ist ein =3D

testttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt=

=3D

ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt=

=3D

ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt=

=3D

tttttttttttttttttttttttttttttttttttttttttttttt


ttsadaSDASDGFDDDDDDDDDDDDASDFASDS;FMXKSFHDCASNMXHALDJCHNCLAFXKHFSUMIFCHAS=

=3D

DFXASDFSDAAFCXADFCASDFXASDFSDAFCXADSFCSDFCASXDFSADFCSAFXASDFCASFXADFSDFCA=

=3D

SXFSDFCACSFXASDFCSDFCSDXFSDFCSFXSDFVASSHBGFJNGHMJGFBDVHFGCSFAXDEC


TESTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTDDDDDDDDDDDDDD=

=3D

DDDDDDDDDDDDDDDDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGG=

=3D

GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH=

=3D

HHHJJJJJJJJJJJJJJJJJJJJJJJJJJDDDDDDDDDDDDDDDDDDDSSSSSSSSSSSS

Weiß einer woran das liegt?

Geschrieben

Na immer dann, wenn die Dateien so kodiert sind. Wenn du Dateien speichern willst, die Base64 kodiert sind, musst du die auch entsprechend dekodieren. Die Kodierung der Mail sollte eigentlich im Header stehen.

Geschrieben (bearbeitet)

na dann ist entweder dein PHP kaputt, oder...

versuch doch mal, nur einige quoted-printable-zeichen durch die funktion zu jagen:

H=E4tten H=FCte ein =DF im Namen, w=E4ren sie m=F6glicherweise keine H=FCte= mehr, sondern H=FC=DFe.

achja, =3D entspricht dem gleichheitszeichen, sonst ist da nix quoted-printable drin.

gibt also für die funktion ausser =3D zu decoden nix zu tun und insofern hast du recht - eingabe ist (beinahe) gleich ausgabe.

s'Amstel

Bearbeitet von Amstelchen
Geschrieben (bearbeitet)
Habe es mit quoted_printable_decode() probiert aber ist kein unterschied zwischen vorher und nachher.

Schau doch einfach im Header nach was für ein transfer encoding da verwendet wurde. Dafür steht es doch da drin. Eine EMail ist nur Text, aber Text ist nicht gleich Text ;)

Bzw vielleicht musst du den Inhalt ja auch erst selbst encoden (jenachdem wie du das versendest und was du nutzt). Eine Mail (nur Textinhalt) ist normalerweise immer quoted-printable codiert. Damit eben auch alle Zeichen korrekt übertragen werden.

EDIT:

Oh, du hatttest das ja als Anhang. Ist deine Mail komplett selbst erstellt oder über eine fertige Klasse (phpMailer oder so)? Auch da solltest du ein entsp. Encoding verwenden und dass auch in der Mail angeben, wenn selbst erstellt.

Bearbeitet von JesterDay
Geschrieben

Habe mir mal alle daten vom Anhang ausgeben lassen. Dies sind die Daten.

Der Inhalt der Textdatei ist der den ich ganz oben aufgeschrieben habe.

stdClass Object
(
[type] => 0
[encoding] => 4
[ifsubtype] => 1
[subtype] => PLAIN
[ifdescription] => 0
[ifid] => 0
[lines] => 13
[bytes] => 803
[ifdisposition] => 1
[disposition] => ATTACHMENT
[ifdparameters] => 1
[dparameters] => Array
(
[0] => stdClass Object
(
[attribute] => FILENAME
[value] => test.txt
)

)

[ifparameters] => 1
[parameters] => Array
(
[0] => stdClass Object
(
[attribute] => NAME
[value] => test.txt
)

)

)
[/PHP]

Type ist 0...

Hier ist nochmal meine function die das decodiert. Die müsste eigentlich richtig sein. Und nach den Typ müsste es imap_8bit decodiert werden...

[PHP] function getdecodevalue($message, $coding) {
if ($coding == 0) {
$message = imap_8bit($message);
}
elseif ($coding == 1) {
$message = imap_8bit($message);
}
elseif ($coding == 2) {
$message = imap_binary($message);
}
elseif ($coding == 3) {
$message = imap_base64($message);
}
elseif ($coding == 4) {
$message = imap_qprint($message);
}
elseif ($coding == 5) {
$message = imap_base64($message);
}

return $message;
}

Geschrieben

Verstehe jetzt nicht genau was du meinst ^.~

Den "Quelltext" der Mail. Ganz genau. Nichts anderes stellen ja die imap_objekte dar, nur hat man da erstmal nen Überblick, und IMHO auch einen einfacheren, was die Mail eigentlich ist, was sie enthält, enthalten soll und ob da nicht vielleicht schon was nicht ganz korrekt ist.

Ach ja, nicht einfach die Mail aus deinem Outlook o.ä. kopieren... wobei, wenn du das mit den imap Funktionen abholst... is schon zu lange her, aber da wird es doch auch eine Möglichkeit geben die eigentliche Quelle auszugeben, oder?

Und weiter sprichst du ja von type 0, aber eigentlich gemeint ist ja das encoding, was da oben 4 ist (was immer das genau bedeutet).

Dennoch ist der Mailquelltext nichts schlechtes. Wenn du mal kapiert hast was eigentlich eine eMail ist und wie sie aufgebaut ist, dann verstehst du auch besser was du da in den Objekten vor dir hast. IMHO.

Geschrieben

Danke für die Info... habe mich die ganze zeit gewundert worans liegen könnt und hab gar nicht daran gedacht anstatt type den encoding wert zu nehmen der benötigt wird.

Habe jetzt encoding benutzt und nun klappt alles einwandfrei.

Danke nochmals

Mit freundlichen Grüßen

Mike1990

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...