php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 16-01-2005, 20:00
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard 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 :
Zitat:
=?iso-8859-1?BQmlzIHp1IDYzJSBzcGFyZW4gLSBXaW50ZXJzY..
und als bei absender auch sowas:
Zitat:
=?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);
?> 

Geändert von TriphunEM (16-01-2005 um 21:21 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 16-01-2005, 20:13
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

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

man man man
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3 (permalink)  
Alt 16-01-2005, 20:29
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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.
Mit Zitat antworten
  #4 (permalink)  
Alt 16-01-2005, 20:36
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

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

__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!

Geändert von TobiaZ (16-01-2005 um 20:44 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 16-01-2005, 21:15
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
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 ¬_¬
Mit Zitat antworten
  #6 (permalink)  
Alt 17-01-2005, 09:18
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
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.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

Newsmanager

Der Newsmanager ist ein Newssystem und Newsletter in einem. Mit WYSIWYG Editor und E-Mail import aus einer bestehenden MySql Datenbank sowie dynamische Kategorien / Themen Filter.

11.09.2019 Stephan_1972 | Kategorie: PHP/ News
Modelmanager

Der Modelmanager ist ein Webtool für Fotografen, kann als komplette Homepage oder als Webtool installiert werden.

11.09.2019 Stephan_1972 | Kategorie: PHP/ Webservice
ContentLion - Open Source CMS ansehen ContentLion - Open Source CMS

ContentLion ist ein in PHP geschriebenes CMS, bei dem man Seiten, Einstellungen usw. in Ordnern lagern kann

22.08.2019 stevieswebsite2 | Kategorie: PHP/ CMS
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:50 Uhr.