E-Mail Adressen aus Outlook Csv extrahieren

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

  • E-Mail Adressen aus Outlook Csv extrahieren

    hallo alle zusammen!
    ich habe folgendes problem.
    ich habe an die 1700 emails vom maildelivery service in denen mailadressen stehen die nicht versand werden konnten.
    diese sind aber in meine sql datenbank eingeschrieben.

    daher will ich anhand eines php skriptes diese mails vom delivery extrahieren und dann per sql aus der datenbank löschen.
    zu folgendem zwischenergebnis bin ich gekommen:

    $quelle = fopen ("ungefiltert.txt", "r");
    if ( file_exists("mailliste.txt")) unlink ("mailliste.txt");

    $ziel = fopen ("mailliste.txt", "a");

    $pos1 = "<";
    $pos2 = ">";
    $filepos = feof($quelle);
    while (!feof($quelle)) {
    $buffer= fgets($quelle, 4096);
    $len= strlen($buffer);
    $maillen = strlen ($myMail);
    $start=0;

    for ($i=0; $i <= $len; $i++){

    $pos1 = strpos ($buffer, "<",$start);
    $pos2 = strpos ($buffer, ">",$start);
    $myMail= substr ($buffer, $pos1+1,-($len-$pos2));
    echo $myMail."<br>";



    //exit;



    $start=$pos1;
    //echo $start."<br>";

    //fwrite ($ziel, $myMail);
    }

    }
    ?>


    folgendes mailliste hab ich genommen:
    ##########################################<afrg@de.de><bfrg@de.de><cfrg@de.de><dfrg@de.de>########## ##########################################################################<efrg@de.de>
    ####################################################################################<frg@de.de>
    p.s.: die mails werden in diesen klammern "<>" dargestellt und somit eigentlich gut erkennbar...

    wer könnte mir da weiterhelfen? ich komme einfach nicht mehr weiter!


    gruß
    lizar
    Zuletzt geändert von Lizar; 06.04.2006, 13:39.

  • #2
    hallo nochmal
    sorry wenn ich auf meinen eigenen thread antworte aber ich habs geschafft


    $quelle = fopen ("ungefiltert.txt", "r");
    if ( file_exists("mailliste.txt")) unlink ("mailliste.txt");

    $ziel = fopen ("mailliste.txt", "a");

    $pos1 = "<";
    $pos2 = ">";

    $filepos = feof($quelle);
    while (!feof($quelle)) {
    $buffer= fgets($quelle, 4096);
    $len= strlen($buffer);
    $maillen = strlen ($myMail);
    $start=0;

    for ($i=0; $i <= $filepos; $i++){

    $pos1 = strpos ($buffer, "<",$start);
    $pos2 = strpos ($buffer, ">",$start);
    $myMail = substr ($buffer, $pos1+1,-($len-$pos2));

    if($myMail)echo $myMail."<br>";
    $start=$pos2;
    //echo $start."<br>";

    if($myMail){

    fwrite ($ziel, $myMail);
    //auf vorhandensein prüfen
    $sql="";



    }
    }
    }
    ?>
    ausserdem sollte man die datei als *.txt exportieren lassen, denn dann hat php weniger schwierigkeiten die mails zu filtern

    *freu*
    vielleicht kann mir ja einer nen tipp geben wie ich das jetzt mit der sql abfrage mache?

    Kommentar


    • #3
      OffTopic:
      sorry wenn ich auf meinen eigenen thread antworte aber ich habs geschafft
      abgesehen davon das deine Code vieeeeell zu breit ist sollte es mehr so Leute geben, die dann die fertige Lösung zum Problem abschließend posten.

      Kommentar


      • #4
        delete where adresse = $adressse

        in ner schleife und für $adresse jeweils einen eintrag aus deiner txt

        Kommentar


        • #5
          Original geschrieben von komikaa
          delete where adresse = $adressse

          in ner schleife und für $adresse jeweils einen eintrag aus deiner txt
          ist viel zu langsam, und kann bei vielen adressen tödlich sein.

          PHP-Code:
          function _escapeString$str ) {
            return 
          "'"mysql_escape_string($str) ."'"
          }

          // array mit adressen.
          $arr = array(
            
          'ding@dong.at',
            
          'bling@blong.de',
            
          'fritz@franz.ch',
          );

          // alles mit anführungszeichen versehen.
          $emails array_map('_escapeString',$arr);

          $sql 'DELETE FROM emails WHERE email IN ('.  implode(','$emails). ')'
          ... SQL statements in schleifen - no way.

          Kommentar


          • #6
            PHP-Code:
            <?php
            //Zugangsdaten Sql-Datenbank 
            error_reporting(E_ALL);    
            define('MYSQL_HOST',     'localhost');    
            define('MYSQL_USER',     'root');    
            define('MYSQL_PASS',     '');    
            define('MYSQL_DATABASE''testdatenbank');

                
            //Datenbanküberprüfung
                
            $db_link = @mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS);

                if(
            $db_link) {
                     echo 
            "<b>Verbindung zur Datenbank ".MYSQL_DATABASE." erfolgreich!!!</b><br />\n";

                    if(
            mysql_select_db(MYSQL_DATABASE$db_link)) {
                        echo 
            "Die Datenbank ".MYSQL_DATABASE." wurde ausgewählt <br>";
                    } else {
                        echo 
            "Datenbank ".MYSQL_DATABASE." wurde nicht gefunden";
                    }
                } else {
                    echo 
            "Es konnte keine Verbindung aufgebaut werden";
                }

            //Verbindungsaufbau
            @mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());    
            mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());


            //Öffnen der Dateien
            $quelle fopen ("ungefiltert.txt""r");
            if ( 
            file_exists("mailliste.txt")) unlink ("mailliste.txt");
                
            $ziel fopen ("mailliste.txt""a");


            //Deklaration der Konstanten Variablen
            $pos1 "<";
            $pos2 ">";

            $filepos feof($quelle);
            //Schleife für Zeilenweises auslesen
            while (!feof($quelle)) {
                    
            $bufferfgets($quelle4096);
                    
            $lenstrlen($buffer);
                    
            $maillen = @strlen ($myMail);

                    
            $start=0;       
             
            for (
            $i=0$i <= $filepos$i++){        
                    
            $pos1 strpos ($buffer"<",$start);
            $pos2 strpos ($buffer">",$start); 
            $myMail substr ($buffer$pos1+1,-($len-$pos2)); 


            //Ausgabe im Browser
            if($myMail){echo "$myMail.<br>";
            $start=$pos2;}


            //echo $start."<br>";


            //Schreibe nur dann wenn auch Mail vorkommt
            if($myMail){
                    
            /*$sql= "INSERT INTO email (email) VALUES ('".$myMail."');";
                    $result=mysql_query($sql)or die(mysql_error());
                    //fwrite ($ziel, $myMail."\n");
                    */
                    
            $sql"DELETE FROM email WHERE email=('".$myMail."');";
                    
            $result=mysql_query($sql)or die(mysql_error());
                    
                    
                    
            }
            }
            }
              
              
            //auf vorhandensein prüfen
            ?>
            selbst ist der mann, sql hab ich auch geschafft, ist ja nicht so schwer
            klar poste ich die lösung, vielleicht gibt es jemanden der die selben probleme hat

            grüße
            lizar


            edit: noch ne kleinere erläuterung
            die ausgeklammerten sachen sind entweder unterdrückte ausgaben oder im letzten falle wollte ich nur mal sehen ob er die adressen auch in die sql datenbank reinschreiben konnte.
            Zuletzt geändert von Lizar; 07.04.2006, 10:58.

            Kommentar

            Lädt...
            X