Alles Großgeschrieben... warum?

mydoys.de

Well-known member
ID: 84968
L
20 April 2006
2.743
123
Hi Leute ich habe ein Script welches E-Mails aus dem Postfach abruft und in einer Datenbank speichert...

Seit neustens schreibt diese Script aber alle E-Mail adresse in Größ schrifft in die datenbank...
warum auch immer...

An dieser Stelle vom Script wird die adresse bestimmt:
PHP:
     // Extrahiere Sender und Sender-Name in Name und E-Mail
     list($fromName,$fromemailadresse) = split(" <",$from);
     $fromemailadresse = ereg_replace(">","",$fromemailadresse);


und das dürfte die komplette stelle sein wo es abgefragt wird und dann in die datenbank eingetragen wird...


PHP:
    if($Mail_vorhanden  == 0)   
    {
     // Decodiere nicht Ansi Zeichen im Betreff und Absender
     $from = ereg_replace("\"","",$from);
     $subj = transformstr(imap_utf8($subj));
     $from = transformstr(imap_utf8($from));

     // Formatiere Datum im Format (2004-12-31 12:00:00)
     list($dayName,$day,$month,$year,$time,$timezone) = split(" ",$dato);
     $dato = $year ."-". getMonthInt($month) ."-". $day ." ". $time;
     $dateFolder = $year ."-". getMonthInt($month) ."-". $day;

     // Extrahiere Sender und Sender-Name in Name und E-Mail
     list($fromName,$fromemailadresse) = split(" <",$from);
     $fromemailadresse = ereg_replace(">","",$fromemailadresse);

     // Body der Mail auswerten (plain Text)
     $dataTxt = get_part($mbox, $msgno, "TEXT/PLAIN");
     // Body der Mail auswerten (html Text)
     $dataHtml = get_part($mbox, $msgno, "TEXT/HTML");

/*
     if ($dataHtml != "")   
     {
      $msgBody = $dataHtml;
     }   
     else   
     {
      $msgBody=ereg_replace("\n","<br>",$dataTxt);
      $msgBody=preg_replace("/([^\w\/])(www\.[a-z0-9\-]+\.[a-z0-9\-]+)/i","$1https://$2", $msgBody);
      $msgBody=preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<A TARGET=\"_blank\" HREF=\"$1\">$1</A>", $msgBody);
      $msgBody=preg_replace("/([\w-?&;#~=\.\/]+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?))/i","<A HREF=\"mailto:$1\">$1</A>",$msgBody);
     }
*/

     $msgBody = $dataHtml;
     $msgBody2 = $dataTxt;

     // Variablen die gespeichert werden
     $mail_messageid = $messageid;
     $mail_sender_address = $fromemailadresse;
     $mail_sender_name = $fromName;

     if($mail_sender_address=='')   
     {
      $mail_sender_address = $mail_sender_name;
      $mail_sender_name ='';
     }
     $mail_dato=time();
     $mail_recipient_address = $toadr;
     $mail_subject = $subj;
     $mail_subject= ereg_replace("'","\'",$mail_subject);
     $mail_from = $from;
     //$mail_dato = $dato;
     $mail_attachmentsArray = $fileNameArray;
	 $mail_body = $msgBody;
     $mail_body = ereg_replace("'","\'",$mail_body);

	 $mail_body2 = $msgBody2;
     $mail_body2 = ereg_replace("'","\'",$mail_body2);
     
	 $mail_head = $head;
     $mail_header = ereg_replace("'","\'",$mail_head);
	 
     $Email_ohne_id_vorhanden = "0";

     // Abfrage ob Datei in der Datenbank existiert
     $abfrage_1 = mysql_query ("SELECT nachrichten_id
                                FROM   nachrichten
                                WHERE  absender_email = '".$mail_sender_address."'
                                AND    absender_name = '".$mail_sender_name."'                           
                                AND    nachrichten_betreff = '".$mail_subject."'
                                AND    absende_zeit = '".$mail_dato."'
                                AND    nachrichten_text ='".$mail_body."'
                                AND    nachrichten_text2 ='".$mail_body2."'
                                AND    empfaenger_email ='".$mail_recipient_address."'
                                LIMIT  0,1");

     // Wenn ein Eintrag in der Datenbank
     while(@$ergebnis_1 = mysql_fetch_array(@$abfrage_1)) 
     {  
      $Email_ohne_id_vorhanden = "1";
       if($LoG == "1") 
       {
       echo "";
       }
      $Mailanzahl++;
     }
 
Hm.. das ist komisch.
Mach mal ein paar Ausgaben deiner E-Mail Adresse in den Code und schau was passiert.

z.B. Vor und Nach Stellen, an denen etwas mit der E-Mail Adresse passiert ;)
 
Hm.. das ist komisch.
Mach mal ein paar Ausgaben deiner E-Mail Adresse in den Code und schau was passiert.

z.B. Vor und Nach Stellen, an denen etwas mit der E-Mail Adresse passiert ;)

also ich habe jetzt mal ne ausgabe gemacht nach der ersten Code Pasage
mit hilfe von
PHP:
echo"$fromemailadresse";
aber es bleibt leer...
 
Hm.. eine Ausgabe alleine bewirkt auch wenig.
Du musst an mehreren Stellen eine Ausgabe der E-Mail Adresse machen, ich setzte meistens um einer Variable noch | oder so bei der Ausgabe. Wenn die dann leer ist sehe wenigstens etwas ;)
Also in deinem Fall:
PHP:
echo "|" . $fromemailadresse . "|";

btw: Pack die Variable nicht in Anführungszeichen ;) echo $variable; geht auch.
 
So also ich habe jetzt an mehren Stellen mir die anzeigen ansehen lassen..
aber schon an der ersten stelle wo die e-mail adresse ermittelt wird ist alles groß geschrieben...
Achso der betreff ist auch immer groß geschrieben...

PHP:
     // Extrahiere Sender und Sender-Name in Name und E-Mail
     list($fromName,$fromemailadresse) = split(" <",$from);
     $fromemailadresse = ereg_replace(">","",$fromemailadresse);


echo "|" . $fromemailadresse  . "|"; echo"<br>";


Der restliche code : bis zu dieser stelle:

PHP:
// Konvertiere Zeichen in der E-Mail fuer eine korrekte Ansicht
function transformstr($str)   {
   $str = ereg_replace("\=\?iso-8859-1\?Q\?","",$str);
   $str = ereg_replace("\=\?ISO-8859-1\?Q\?","",$str);
   $str = ereg_replace("\=E5","å",$str);
   $str = ereg_replace("\=E6","æ",$str);
   $str = ereg_replace("\=F8","ø",$str);
   $str = ereg_replace("\?\=","",$str);
   $str = ereg_replace("_"," ",$str);
   $str = ereg_replace("\=3F","?",$str);
   $str = ereg_replace("\=2E",".",$str);
   $str = ereg_replace("\=2C",",",$str);
   $str = ereg_replace("ø","ø",$str);
   $str = ereg_replace("Ã¥","å",$str);
   $str = ereg_replace("Ä","Ä",$str);
   $str = ereg_replace("Ö","Ö",$str);
   $str = ereg_replace("Ãœ","Ü",$str);
   $str = ereg_replace("ä","ä",$str);
   $str = ereg_replace("ö","ö",$str);
   $str = ereg_replace("ü","ü",$str);
   
   return $str;
}

// Ersetzte die Zeichen in den Text-Anhänge
function zeichensatz($code) {
  $code = ereg_replace("=E4", "ä",$code);
  $code = ereg_replace("=F6", "ö",$code);
  $code = ereg_replace("=FC", "ü",$code);
  $code = ereg_replace("=3D", "=",$code);
  $code = ereg_replace("=A7", "§",$code);
  $code = ereg_replace("=C4", "Ä",$code);
  $code = ereg_replace("=D6", "Ö",$code);
  $code = ereg_replace("=DC", "Ü",$code);
  $code = ereg_replace("=B0", "°",$code);
  $code = ereg_replace("=20", " ",$code);
  $code = ereg_replace("=0A=", " ",$code);
  $code = ereg_replace("=\r\n", "",$code);

  return $code;
}

// Ersetzte die Monatsnamen durch die Monatszahlen
function getMonthInt($month)   
{
 switch ($month)  
 {
  case "Jan":
  $month = "01";
  break;

  case "Feb":
  $month = "02";
  break;
	  
  case "Mär":
  $month = "03";
  break;
	  
  case "Apr":
  $month = "04";
  break;
	 
  case "Mai":
  $month = "05";
  break;
	 
  case "Jun":
  $month = "06";
  break;
	  
  case "Jul":
  $month = "07";
  break;
	  
  case "Aug":
  $month = "08";
  break;
	  
  case "Sep":
  $month = "09";
  break;
	  
  case "Okt":
  $month = "10";
  break;
	  
  case "Nov":
  $month = "11";
  break;
	  
  case "Dec":
  $month = "12";
  break;
 }
 return $month;
}

// Funktion - MIME Typ auslesen                                              
function get_mime_type(&$structure)   
{
 $primary_mime_type = array("TEXT","MULTIPART","MESSAGE","APPLICATION","AUDIO","IMAGE","VIDEO","OTHER");
 if($structure->subtype)   
 {
  return $primary_mime_type[(int) $structure->type] . '/' .$structure->subtype;
 }
 return "TEXT/PLAIN";
}

// Funktion - Part Typ auslesen 
function get_part($stream, $msg_number, $mime_type, $structure = false,$part_number = false)   
{
 if(!$structure)   
 {
  $structure = imap_fetchstructure($stream, $msg_number);
 }
 if($structure)   
 {
  if($mime_type == get_mime_type($structure))   
  {
   if(!$part_number)   
   {
    $part_number = "1";
   }
	 $text = imap_fetchbody($stream, $msg_number, $part_number);
	 if($structure->encoding == 3)   
   {
		return imap_base64($text);
   }
   else if($structure->encoding == 4)   
   {
    return imap_qprint($text);
   }   
   else   
   {
    return $text;
   }
  }
  if($structure->type == 1)   
  {
   while(list($index, $sub_structure) = each($structure->parts))   
   {
    if($part_number)   
    {
     $prefix = $part_number . '.';
    }
    $data = get_part($stream, $msg_number, $mime_type, $sub_structure,$prefix . ($index+1));
    if($data)   
    {
     return $data;
    }
   }
  }
 }
 return false;
}

// Funktion zum Speichern der Anhaenge
function storeFile($strFileType,$strFileType2,$strFileName,$fileContent,$fileSize,$strFolder,$placeOnFS,$Mail_Ablage)   
{
 //$Mail_Ablage = sprintf("%04u",$Mail_Ablage);
 $strFileName = "mailanhang/". $strFileName;
 $strFilePath = "mailanhang/";
 $strFolderOnFS = "mailanhang/";
  
  if ($strFileType == "7BIT") {
             
  $ContentToWrite = zeichensatz(base64_decode(imap_binary($fileContent)));

  } else if ($strFileType == "8BIT") {
  
  // decodierung muss noch gemacht werden

  } else if  ($strFileType == "BINARY") {
  
  // decodierung muss noch gemacht werden
  
  } else if  ($strFileType == "BASE64") {
   
  $ContentToWrite = base64_decode($fileContent);
  
  } else if  ($strFileType == "QUOTED-PRINTABLE") {
  
  $ContentToWrite = zeichensatz(quoted_printable_decode($fileContent));
  
  } else if ($strFileType == "OTHER") {
             
  // decodierung muss noch gemacht werden

  }
    
 $binfile = true;

 if (!file_exists($strFileName))   
 {
  touch($strFileName);
  chmod($strFileName,0666);
  
  echo "";

 }   
 else   
 {
  for ($n=1;$n<=100;$n++)   
  {
   if ($n < 2)   
   {
   
    $strFileType3 = strstr($strFileName,".");
   
    if (substr($strFileType3,0,1) == ".")   
    {
     $strFileName = ereg_replace($strFileType3,"",$strFileName) ."~". $n . 
     $strFileType3;
    }   
    else   
    {
     $strFileName = ereg_replace(".".$strFileType3,"",$strFileName) ."~". $n .".". $strFileType3;
    }
   }   
   else   
   {
    if (substr($strFileType3,0,1) == ".")   
    {
     $strFileName = ereg_replace($strFileType3,"",$strFileName) ."~". $n . $strFileType3;
		}   
    else   
    {
     $strFileName = ereg_replace(".".$strFileType3,"",$strFileName) ."~". $n .".". $strFileType3;
    }
    $strFileName = ereg_replace("~".($n-1),"",$strFileName);
   }
   if (!file_exists($strFileName))   
   {
    touch(@$strFileName);
    @chmod($strFileName,0666);
	
	echo "";

    break;
   }
  }
 }
 if (is_writable($strFileName))   
 {
  if ($handle = fopen($strFileName, 'w+'))   
  {
   if (!fwrite($handle,$ContentToWrite))   
   {
    echo "";
   }  
  }
  else
  {
   echo "";
  }

  fclose($handle);
 
 }
 $strFileName = ereg_replace($strFilePath,"",$strFileName);
 return $strFileName;
 
}

// Funktion Wort kürzen
function wort_kuerzen($text, $zeichen, $kolanz) {
  $zeichenanzahl_1 = strlen($text);
  $wort = explode(" ",$text);
  $newstr = "";
  $i = 0;
  while(strlen($newstr)<=$zeichen && strlen($newstr.$wort[$i])<=($zeichen+$kolanz)) {
    $newstr .= $wort[$i]." ";
    $i++;
  }
  $zeichenanzahl_2 = strlen($newstr);
  if($zeichenanzahl_2<$zeichenanzahl_1)  {
  $newstr .= "...";
  }
  return $newstr;
}


?>
<?php

// Pruefe ob Mail schon existiert
$accounts = "SELECT pop3einstellung.id, 
                    pop3einstellung.account_name,
                    pop3einstellung.account_besitzer,
                    pop3einstellung.account_server,
                    pop3einstellung.account_port,
                    pop3einstellung.account_protokoll,
                    pop3einstellung.benutzername,
                    pop3einstellung.passwort 
               FROM pop3einstellung";

// Ergebnis der Abfrage
$res_accounts = mysql_query($accounts);

// Wenn Abfrage nicht erfolgreich
if(!$res_accounts)   
{
 // Fehlermeldung
 echo("<p>Abfrage nicht erfolgreich: " . mysql_error() . "</p>\n");
}   
else   
{
 while ($Mail=mysql_fetch_array($res_accounts, MYSQL_ASSOC))   
 {


  $MySQL_Normalized = 1;

  // Variablendeklaration
  $ServerName = "{". $Mail[account_server] ."/";
  $ServerName = $ServerName . $Mail[account_protokoll] .":". $Mail[account_port] ."}INBOX";

  // Oeffne die Mailbox, falls dies fehlerhaft war gib eine Nachricht aus
  $mbox = imap_open($ServerName,$Mail[benutzername],$Mail[passwort]);

  // Ueberpruefe nach Nachrichten im Mail-Box Eingang
  if ($hdr = imap_check($mbox))   
  {
   // Ausgabe der Anzahl der Nachrichten in der Mail-Box
  
   // Speichere die Anzahl der Nachrichten in der Variable
   $msgCount = $hdr->Nmsgs;
  }   
  else   
  {
   // Fehlermeldung ausgeben
   echo "<font color='red'> Nachrichten konnten nicht abgerufen werden.</font>";
  }

  // Variablendeklaration
  $MN=$msgCount;

  // Uebersicht der Mails abrufen
  $overview=imap_fetch_overview($mbox,"1:$MN",0);

  // Groesse der Uebersicht
  $size=sizeof($overview);

  // Schleife die fuer jede Mail abgearbeitet wird
  for($ss=$size-1;$ss>=0;$ss--)   
  {
   // Header abrufen
   $val=$overview[$ss];
   $msgno=$val->msgno;
   $from=$val->from;
   $dato=time();
  //$dato=$val->date; (0000-00-00 00:00:00)
   $subj=$val->subject;
   $head = imap_fetchheader($mbox,$msgno);
   $toadr=$val->to;
   $messageid = $val->message_id;
   //$hdrinfo = imap_headerinfo($mbox,$msgno,1024,"localhost");
	$hdrinfo = imap_headerinfo($mbox,$msgno,1023,"localhost");
   $toadr = $hdrinfo->to[0]->mailbox ."@". $hdrinfo->to[0]->host;
   $toadr2=$hdrinfo->to[0]->host;
   $messageid= ereg_replace("<","",$messageid);
   $messageid= ereg_replace(">","",$messageid);




   // Pruefe ob Mail schon existiert
   $exist_mail = "SELECT nachrichten.id 
                  FROM   nachrichten 
                  WHERE  nachrichten.nachrichten_id = '$messageid'";

   // Ergebnis der Abfrage
   $res_exist_mail = mysql_query($exist_mail);

   // Wenn Abfrage nicht erfolgreich
   if(!$res_exist_mail)   
   {
    // Fehlermeldung
     echo "<tr bgcolor=#FCFCFC><td>";
     echo " Abfrage nicht erfolgreich: " . mysql_error() . ".";
     echo "</td></tr>";


   }   
   else   
   {
    // Wenn mindestens ein Datensatz gefunden wurde
    $Mail_vorhanden = "0";

    while($ergebnis_res_exist_mail = @mysql_fetch_array($res_exist_mail)) 
    {
     if($ergebnis_res_exist_mail[nachrichten.id] != "")
     {
      $Mail_vorhanden = "1";
     }
    }

    if($Mail_vorhanden  == 0)   
    {
     // Decodiere nicht Ansi Zeichen im Betreff und Absender
     $from = ereg_replace("\"","",$from);
     $subj = transformstr(imap_utf8($subj));
     $from = transformstr(imap_utf8($from));

     // Formatiere Datum im Format (2004-12-31 12:00:00)
     list($dayName,$day,$month,$year,$time,$timezone) = split(" ",$dato);
     $dato = $year ."-". getMonthInt($month) ."-". $day ." ". $time;
     $dateFolder = $year ."-". getMonthInt($month) ."-". $day;

     // Extrahiere Sender und Sender-Name in Name und E-Mail
     list($fromName,$fromemailadresse) = split(" <",$from);
     $fromemailadresse = ereg_replace(">","",$fromemailadresse);


echo "|" . $fromemailadresse  . "|"; echo"<br>";
 
da ich derzeit keine Lösung gefunden habe warum das so ist habe ich jetzt einfach:

strtolower() angewand..

Mit hilfe davon wandelt er alles ins kleingeschrieben um...


edit:
Sollte ein edit werden Sorry
 

Das ist ein Bug in deiner PHP Version.
Also update (oder auch downgraden ^^) und dann sollte das wieder vernünftig laufen. Wird aber schwer das zu machen, du wirst wahrscheinlich auf einem Webspace arbeiten und da hat dann nur der Hoster die entsprechenden Rechte ;)
Wird also schwer werden, da etwas zu machen. Wenn du nur mit klein geschriebenen Strings arbeiten willst, dann sollte dein strtolower() schon helfen... Aber optimal ist es natürlich nicht ;) (Dank dem PHP Bug)
 
Das ist ein Bug in deiner PHP Version.
Also update (oder auch downgraden ^^) und dann sollte das wieder vernünftig laufen. Wird aber schwer das zu machen, du wirst wahrscheinlich auf einem Webspace arbeiten und da hat dann nur der Hoster die entsprechenden Rechte ;)
Wird also schwer werden, da etwas zu machen. Wenn du nur mit klein geschriebenen Strings arbeiten willst, dann sollte dein strtolower() schon helfen... Aber optimal ist es natürlich nicht ;) (Dank dem PHP Bug)

achso.. ok dann werde ich mal meinem Hoster bescheid sagen das es da einen bug gibt