Hallo,
gerne würde ich meine E-Mails abrufen und in der Datenbank speichern.
Soweit klappt dies auch. Anhänge, HTML Mails und Textmails funktionieren soweit.
Hin und wieder kommt es aber vor das er den Text falsch wiedergibt bzw. falsch codiert. Dann sieht er so aus
Dies betrifft übrigens nicht nur Sonderzeichen. Leider schreibt er auch hin und wieder Teile des Headers in die Datenbank.
Und hier mein Script
Alles anzeigen
gerne würde ich meine E-Mails abrufen und in der Datenbank speichern.
Soweit klappt dies auch. Anhänge, HTML Mails und Textmails funktionieren soweit.
Hin und wieder kommt es aber vor das er den Text falsch wiedergibt bzw. falsch codiert. Dann sieht er so aus
die zust=3DC3=3DA4ndigen Moderatoren sind sicherlich im Urlaub....Mit freundlichen Gr=3DC3=3DBC=3DC3=3D9Fen
Die Rechnungen können Sie innerhalb Ihres Kundeninterface unter dem Pu==3Dnkt Rechnungsübersicht einsehen.=3D0A=3D0A
F=3DC3=3DBCr meine Webseite damals hab ich einen Server von strato gemietet=. Ic=3Dh muss sagen, sie waren recht gut bez=3DC3=3DBCglich Schnelligkeit, Service=etc=3D
Dies betrifft übrigens nicht nur Sonderzeichen. Leider schreibt er auch hin und wieder Teile des Headers in die Datenbank.
--b2_90afbf4a3f4986efa19e4202d7aed1e7
Content-Type: text/plain; charset=3Dutf-8
Content-Transfer-Encoding: quoted-printable
=3D0A=3D0A=3D0A =3D0A=3D0A
Hallo Frau/Herr Christian xxxx,=3D0A=3D0Aleider haben wir
Und hier mein Script
PHP-Quellcode
- <?php
- define('ACP', true);
- define('ACP_PATH', './');
- define('PATH', '../');
- define('EXT', substr(strrchr(__FILE__, '.'), 1));
- // Einbinden der Initialisierungsdatei
- include (ACP_PATH . 'init/init.php');
- include (ACP_PATH . 'class/ticket_class.php');
- $Ticket = new Ticket;
- $mbox = imap_open( "{imap.domain.de:143/novalidate-cert}INBOX" , 'info@domain.de' , '!secret%' );
- $message = array();
- $message["attachment"]["type"][0] = "text";
- $message["attachment"]["type"][1] = "multipart";
- $message["attachment"]["type"][2] = "message";
- $message["attachment"]["type"][3] = "application";
- $message["attachment"]["type"][4] = "audio";
- $message["attachment"]["type"][5] = "image";
- $message["attachment"]["type"][6] = "video";
- $message["attachment"]["type"][7] = "other";
- function get_decode_value($message, $encoding) {
- switch($encoding) {
- case 0:
- case 1:
- $message = imap_8bit($message);
- break;
- case 2:
- $message = imap_binary($message);
- break;
- case 3:
- case 5:
- $message = imap_base64($message);
- break;
- case 4:
- $message = imap_qprint($message);
- break;
- }
- return $message;
- }
- function fix_text($str)
- {
- $subject = '';
- $subject_array = imap_mime_header_decode($str);
- foreach ($subject_array AS $obj) {
- $subject .= rtrim($obj->text, "\t");
- }
- return $subject;
- }
- $att = '';
- for ($jk = 1; $jk <= imap_num_msg($mbox); ++$jk) {
- print_r($structure = imap_fetchstructure($mbox, $jk));
- /* retrieve message timestamp */
- $header = imap_headerinfo($mbox, $jk);
- $timestamp = $header->udate;
- // Ticket in Datenbank eintragen
- $ticket_array = array();
- $ticket_array['name'] = $header->from[0]->personal;
- $ticket_array['email'] = $header->from[0]->mailbox.'@'.$header->from[0]->host;
- $ticket_array['status'] = 1;
- $ticket_array['date'] = $header->udate;
- $ticket_array['subject'] = fix_text($header->Subject);
- $ticket_array['priority'] = '3';
- // Prüfen ob Anhang
- if(isset($structure->parts)) {
- $parts = $structure->parts;
- $fpos=2;
- for($i = 1; $i < count($parts); $i++) {
- $message['pid'][$i] = ($i);
- $part = $parts[$i];
- if(isset($part->disposition) == "INLINE") {
- $message["type"][$i] = $message["attachment"]["type"][$part->type] . "/" . strtolower($part->subtype);
- $message["subtype"][$i] = strtolower($part->subtype);
- $ext = $part->subtype;
- $params = $part->dparameters;
- $filename = $part->dparameters[0]->value;
- $body="";$data="";
- $body = imap_fetchbody($mbox, $jk, $fpos);
- $inhalt1 = get_decode_value($body, $part->type);
- //Schreibe Anhänge in Datei
- $fp = fopen('file/'.$part->dparameters[0]->value, 'w+');
- fwrite ($fp, $inhalt1);
- fclose($fp);
- $att .= $part->dparameters[0]->value.';';
- $ticket_array['attachment'] = $att;
- $fpos++;
- }
- }
- }
- // prüfen ob Ticket ID im header ist
- if (preg_match('/[A-Z]{3,}-[0-9]{3,}-[0-9]{3,}/', $header->subject)) {
- // Rückgabe der Ticket-ID
- preg_match('/[A-Z]{3,}-[0-9]{3,}-[0-9]{3,}/', $header->subject, $match);
- $ticket_id = $match[0];
- $varse = "'".$ticket_id."'";
- // Status wieder auf Offen setzen
- $status_update = array();
- $status_update['status'] = 1;
- $sql = 'UPDATE ' . TICKETS . ' SET ' . $db->sql_build_array('UPDATE', $status_update) . ' WHERE ticket_id_parrent IS NULL AND ticket_id = ' . (string) $varse;
- $db->sql_query($sql);
- // Ticket zuordnung
- $sql = "SELECT * FROM " . TICKETS . " WHERE ticket_id = '" . $ticket_id ."' AND ticket_id_parrent IS NULL";
- $result = $db->sql_query($sql);
- $row = $db->sql_fetchrow($result);
- $ticket_array['ticket_id_parrent'] = $row['id'];
- $ticket_array['ticket_id'] = $ticket_id;
- } else {
- $ticket_array['ticket_id'] = $Ticket->randomTicket();
- }
- $messages = imap_fetchbody($mbox, $jk, "1");
- if($structure->encoding == 0) {
- $messages = imap_8bit($messages);
- } else if($structure->encoding == 1) {
- $messages =$messages;
- } else if($structure->encoding == 2) {
- $messages = imap_binary($messages);
- } else if($structure->encoding == 3) {
- $messages = imap_base64($messages);
- } else if($structure->encoding == 4) {
- $messages = imap_qprint($messages);
- } else if($structure->encoding == 5) {
- $messages = imap_base64($messages);
- } else {
- $messages = imap_qprint($messages);
- }
- $ticket_array['message'] = $messages;
- $sql = 'INSERT INTO ' . TICKETS. ' ' . $db->sql_build_array('INSERT', $ticket_array);
- $db->sql_query($sql);
- #imap_delete($mbox,$jk);
- }
- #imap_expunge($mbox);
- imap_close($mbox);
- ?>