Kleinere Fehler bei Email empfang vom Server!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kleinere Fehler bei Email empfang vom Server!

    Hallo!

    Also ich hab nach langer zeit endlich ein script zusammen gefummelt um
    Emails+Anhang vom Server zu holen und in einen Datenbank zu speichern.
    Und ich bitte euch mir zu helfen es zu perfektionieren, dann werd ich es
    auch als Script frei geben, denn sowas ist oft gefragt und wird nie wirklich gefunden.

    Im Grund geht das auch alles Super!

    Allerdings gibt es bei manchen emails probleme mit der darstellung des
    bodys,absenders und des betreffs, ich hoffe das ihr im folgend code den
    fehler findet und korekiert.

    Manchmal, also nicht immer, kommt es vor das mir als betreff so ein
    quatsch angezeigt wird :
    =?iso-8859-1?BQmlzIHp1IDYzJSBzcGFyZW4gLSBXaW50ZXJzY..
    und als bei absender auch sowas:
    =?iso-8859-1?B?c2hvcHBpbmcyNCA=?= <shopping24@info.shopping24.de>
    Wo liegt hier der Fehler im Script?

    Und bei manchen Anhängen wird die email garnicht erst runter geladen,
    bzw. in die db geschrieben, also bei lesen der anhänge müssen auch noch
    fehler sein. ich hoffe ihr findet ein.

    PS : Noch was anderes, wie bekomm ich noch mal raus ob es text/plain
    oder text/html ist, brauch das weil ich html mails im iframe darstellen
    lassen will. Danke!

    Hier der CODE :
    PHP-Code:
    /*******************************************************************************
        Verbindung mit der Datenbank herstellen
    *******************************************************************************/
    if ($HTTP_SERVER_VARS["REMOTE_ADDR"]=="127.0.0.1")
    // LOKALE-Verbindungsdaten definieren
    {
        
    $db_host="localhost";
        
    $db_name="irgendwas";
        
    $db_user="root";
        
    $db_pass="";
    }
    else
    // SERVER-Verbindungsdaten definieren
    {
        
    $db_host="localhost";
        
    $db_name="irgendwas";
        
    $db_user="irgendwas";
        
    $db_pass="irgendwas";
    }
    // Verbindung herstellen
    $db_connect=mysql_connect($db_host,$db_user,$db_pass)
                or die(
    "Verbindung mit der Datenbank fehlgeschlagen. Versuchen Sie es später noch einmal.");
    $db_name_connect=mysql_select_db($db_name)
                or die(
    "Verbindung mit der Datenbank fehlgeschlagen. Versuchen Sie es später noch einmal.");

    /*******************************************************************************
        Verbindung mit dem Postfach herstellen
    *******************************************************************************/

    // POP3-Server
    $host="irgendwas.de";
    $port="110";
    // User-Daten
    $user="irgendwas";
    $passwort="irgendwas";

    // Verbinden zur Mailbox
    $mailbox=imap_open("{".$host."/pop3:110}INBOX","$user","$passwort");

    // Überprüfen ob Verbindung erfolgreich, dann weiter...
    if ($mailbox)
    {
        
    // Empfangsdatum ermitteln
        
    $get_date=date("d.m.Y");
        
    // Variablen vordefinieren
        
    $mail_attachment_name="";
        
    $mail_attachment_temp="";
        
    // Posteingang überprüfen
        
    $check=imap_check($mailbox);
        
    // Anzahl vorhandener Emails im Postfach
        
    $count_msg=$check->Nmsgs;
        
    // Anzahl neuer Emails im Postfach
          
    $count_new_msg=$check->Recent;
          
    // Emails auslesen
        
    for ($i=1$i<=imap_num_msg($mailbox); $i++)
        {
            
    // Mail-Struktur erfassen
            
    $mail_struct=imap_fetchstructure($mailbox,$i);

            
    // Header erfassen
             
    $mail_header=imap_header($mailbox$i);
            
    // Header-Information erfassen
            
    $mail_header_information=nl2br(strip_tags(imap_fetchbody($mailbox,$i,0)));
            
    $mail_header_information=addslashes($mail_header_information);
            
    // Datum erfassen
            
    $mail_date=$mail_header->Date;
            
    // Mail-ID erfassen
            
    $mail_id=$mail_header->message_id;
            
    // Empfänger erfassen
               
    $mail_to=$mail_header->toaddress;
            
    // Absendername erfassen
            
    $mail_from_name=$mail_header->from[0]->personal;
            
    // Absender-eMail-Adresse erfassen
            
    $mail_from_address=$mail_header->from[0]->mailbox."@".$mail_header->from[0]->host;
            
    // Kopieempfänger erfassen
            
    $mail_copy_to=$mail_header->cc[0]->mailbox."@".$mail_header->cc[0]->host;
            
    // Antwortempfänger erfassen
            
    $mail_answer_to=$mail_header->reply_to[0]->mailbox."@".$mail_header->reply_to[0]->host;
            
    // Betreff erfassen
            
    $mail_subject=$mail_header->subject;
            
    // Haupttext für den Body erfassen
            
    $mail_body=imap_fetchbody($mailbox,$i,1);
            if ((
    strpos($mail_body,'<body>')) && (strpos($mail_body,'</body>')))
            {
                   
    // Wenn Html-Mail
                
    $mail_body=substr($mail_body,strpos($mail_body,'<body>'),strpos($mail_body,'</body>'));
                
    $mail_body=nl2br(strip_tags($mail_body));
                
    $mail_body=eregi_replace("------=_NextPart_.*quoted-printable.*------=_NextPart_.*quoted-printable","",$mail_body);
                
    $mail_body=eregi_replace("------=_NextPart_.*--","",$mail_body);
                
    $mail_body=addslashes($mail_body);
            }
            else
            {
                
    // Wenn Textmail
                
    $mail_body=nl2br(strip_tags($mail_body));
                
    $mail_body=eregi_replace("------=_NextPart_.*quoted-printable.*------=_NextPart_.*quoted-printable","",$mail_body);
                
    $mail_body=eregi_replace("------=_NextPart_.*--","",$mail_body);
                
    $mail_body=addslashes($mail_body);
            }

            
    // Größe der Email erfassen
            
    $mail_size=$bodystruct->bytes;
            
    // Dateianhänge erfassen und speichern
            
    $mail_attachment_filename="";
            
    $mail_content_parts=count($mail_struct->parts);
            if (
    $mail_content_parts>=2)
            {
                for (
    $a=2;$a<=$mail_content_parts;$a++)
               {
                    
    $mail_attachment_filename_temp[$a-2]=imap_bodystruct($mailbox,$i,$a);
                }
                for (
    $b=0;$b<sizeof($mail_attachment_filename_temp);$b++)
               {
                     if (
    $mail_attachment_filename_temp[$b]->parameters[0]->value == "us-ascii" || $mail_attachment_filename_temp[$b]->parameters[0]->value == "US-ASCII")
                   {
                         if (
    $mail_attachment_filename_temp[$b]->parameters[1]->value != "")
                       {
                             
    $mail_attachment_filename[$b] = $mail_attachment_filename_temp[$b]->parameters[1]->value;
                         }
                   }
                   elseif (
    $mail_attachment_filename_temp[$b]->parameters[0]->value != "iso-8859-1" && $mail_attachment_filename_temp[$b]->parameters[0]->value != "ISO-8859-1")
                   {
                        
    $mail_attachment_filename[$b] = $mail_attachment_filename_temp[$b]->parameters[0]->value;
                   }
               }
               
    // Email-Anhang als Datei speichern
               
    $inc=1;
               foreach (
    $mail_attachment_filename as $value)
               {
                   
    $inc+=1;
                   
    // Dateiinhalt auslesen
                   
    $mail_attachment_content=imap_fetchbody($mailbox,$i,$inc);
                   
    // Wenn Anhang kleiner 400000 Bytes
                   
    if (strlen($mail_attachment_content)<4000000)
                   {
                       
    // Temporären Dateinamen definieren
                       
    $keys="qwertzupasdfghkyxcvbnm23456789WERTZUPLKJHGFDSAYXCVBNM";
                       
    srand ((double)microtime()*1000000);
                          do { 
    $sfilename="at_"; for($i=0;$i<6;$i++) { $sfilename.=substr($keys,(rand()%(strlen($keys))),1); } $sfilename.=".tmp"; } while (file_exists("uploaded_files/".$sfilename)==true);
                       
    // Datei auf Server schreiben
                       
    $fp=fopen("uploaded_files/".$sfilename,"w");
                       
    fputs($fp,imap_base64($mail_attachment_content));
                       
    fclose($fp);

                       
    $mail_attachment_name.=$value."#";
                       
    $mail_attachment_temp.=$sfilename."#";
                   }
               }
           }
           
    // Email in Datenbank speichern
           
    $mail_attachment_name=substr($mail_attachment_name,0,strlen($mail_attachment_name)-1);
           
    $mail_attachment_temp=substr($mail_attachment_temp,0,strlen($mail_attachment_temp)-1);
           
    $cmd="INSERT INTO pf_posteingang VALUES
                     ('0',
                   '0',
                   '0',
                   '
    $get_date',
                   '
    $mail_date',
                   '
    $mail_header_information',
                   '
    $mail_to',
                   '
    $mail_from_name',
                   '
    $mail_from_address',
                   '
    $mail_copy_to',
                   '
    $mail_answer_to',
                   '
    $mail_subject',
                   '
    $mail_body',
                   '
    $mail_size',
                   '
    $mail_attachment_name',
                   '
    $mail_attachment_temp');";
           
    $result=mysql_db_query($db_name,$cmd);
        }
        
    // Mail zum löschen vormerken
        
    imap_delete($mailbox,'1:*');
        
    // Mail löschen
        
    imap_expunge($mailbox);
        
    // Mailbox schließen
        
    imap_close($mailbox);
    }
    // Datenbankverbindung schließen
    mysql_close($db_connect);
    ?> 
    Zuletzt geändert von TriphunEM; 16.01.2005, 21:21.

  • #2
    http://www.php-resource.de/forum/sho...threadid=47906

    man man man

    Kommentar


    • #3
      so ne blöde antwort ignoriere ich mal. weiß garne was du willst.
      verschandel bitte nicht mein thread sondern trag mal was bei. du meckerst nur rum, statts zu helfen.

      Kommentar


      • #4
        Entweder du befolgst die regeln, oder dieser Thread hier wird geclosed!

        EDIT:
        Warum ich get und nicht geed habe? weil du ja schon was länger dabei bist, und die regeln eigentlich kennen solltest.

        PS: du kannst keine PM schreiben

        Zuletzt geändert von TobiaZ; 16.01.2005, 20:44.

        Kommentar


        • #5
          Original geschrieben von TriphunEM
          so ne blöde antwort ignoriere ich mal. weiß garne was du willst.
          verschandel bitte nicht mein thread sondern trag mal was bei. du meckerst nur rum, statts zu helfen.
          Du weißt, dass niemand sich die Mühe machen wird ständig zu scrollen um dir zu helfen, dein Problem zu lösen?

          Ich ärger mich schon, dass bei dem Post, den ich grade verfasse unten Scrollbalken sind und diese gesamte Tabelle zum Antworten heftigst in die Breite gezogen ist....., da werd ich mir doch keine 10Minuten Zeit nehmen um deinen Code durchzuwühlen um dein Problem zu beheben ¬_¬

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Original geschrieben von TriphunEM
            so ne blöde antwort ignoriere ich mal.
            ich hoffe, dass alle anderen deine frage ignorieren.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar

            Lädt...
            X