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 18-01-2006, 10:47
sunshine_85
 Newbie
Links : Onlinestatus : sunshine_85 ist offline
Registriert seit: Jan 2006
Ort: Geboren in Paderborn, Aufgewachsen in Borchen, Wohne in Brakel
Beiträge: 3
sunshine_85 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Mit PHP eMail Anhänge in Datei speichern

Hallo,

Habe ein echtes Problem.
Ich habe mir mühsam ein Script gebastelt mit dem man e-mails auslesen kann, und habe dann auch tausende Beiträge gefunden wie man EMails mit Anhang schicken kann, aber nicht wie man den Anhang dann schließlich wieder von der e-mail löst um ihn in eine Datei abzuspeichern.
Ich habe echt garkeine Idee wie ich das anstellen soll.
Den Inhalt des Mail Body kann ich schon in einer Datei speichern.

Es wäre ganz klasse, wenn mir dabei jemand helfen könnte.

Mein bisheriges Script zum Email auslesen sieht so aus:

PHP-Code:
<?php
function MailConnect()
{
    
// Connect Daten
    
$host="123.456.789.12";
    
$port="110";
    
$user="Sonja";
    
$passwort="Hallo";
    
    
// Verbinden zur Mailbox
     
$mailbox 
imap_open("{".$host."/pop3:".$port."}INBOX","$user","$passwort")
         or die(
"Verbindung konnte nicht hergestellt werden.<br />\n");
        
        
// 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++) {
            
// Header erfassen
            
$mail_header=imap_header($mailbox,$i);
            
            
// 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;
            
            
// Betreff erfassen
            
$mail_subject=$mail_header->subject;
            
            
// gesamte Nachricht erfassen
            
$nachricht=imap_body($mailbox$i);
            
            
//Ersetzten des \ durch nichts da sonst die Attribute 
                         //nicht mit geparst werden.
            
$nachricht=str_replace("\\",""$nachricht);
    
            
//öffnet die schon bereits vorhandene Datei 
                             //Text.php, in die 
            //dann die Nachricht geschrieben wird.        
    
            
$handle fopen("Text.php","w");
               
fputs($handle,$nachricht);
               
fclose($handle);
            
                
        }
    
    
imap_close($mailbox);
?>
DANKESCHÖN!!!
__________________
--------------------------------------------
Lebe lieber ungewöhnlich!!
Mit Zitat antworten
  #2 (permalink)  
Alt 18-01-2006, 14:09
Shurakai
 Master
Links : Onlinestatus : Shurakai ist offline
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.084
Shurakai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hmm.... werden die Mails nicht einfach base64 codiert und angehängt im MailBody oder so...?
Mit Zitat antworten
  #3 (permalink)  
Alt 18-01-2006, 14:21
galaxy2
 Junior Member
Links : Onlinestatus : galaxy2 ist offline
Registriert seit: Jun 2005
Beiträge: 238
galaxy2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hatte mal irgendwann im Internet folgendes skript dazu gefunden. Vieleicht Hilft es dir weiter:


PHP-Code:

// opens connection to a mailbox
$mbox imap_open ("{localhost:143}""username""pass");


function 
parsepart($p,$i)
   {
    global 
$mbox,$msgid,$partsarray,$j;
    
//where to write file attachments to:
    
$filestore "Y:/txt-Files/";
    
//echo "link ".$mbox."  msgnum ".$msgid. "p  ".$p." i ".$i." ARR ".$partsarray."<br>";

    //fetch only a part of the body
    
$part=imap_fetchbody($mbox,$msgid,$i);

     
//if type is not text
     
if ($p->type!=0)
      {
       
//DECODE PART
       //decode if base64
       
if ($p->encoding==3)
       {
$part=base64_decode($part);}
       
//decode if quoted printable
       
if ($p->encoding==4)
       {
$part=quoted_printable_decode($part);}
       
//no need to decode binary or 8bit!

       //get filename of attachment if present
       
$filename='';


       
// if there are any dparameters present in this part
       
if (count($p->dparameters)>0)
         {
           foreach (
$p->dparameters as $dparam)
             {
              if ((
strtoupper($dparam->attribute)=='NAME'
              ||(
strtoupper($dparam->attribute)=='FILENAME'))
                 {
                  
$filename=$dparam->value;
                 }
             }
         }
         
         
       
//if no filename found
       
if ($filename=='')
          {
           
// if there are any parameters present in this part
           
if (count($p->parameters)>0)
              {
               foreach (
$p->parameters as $param)
                 {
                   if ((
strtoupper($param->attribute)=='NAME'
                   ||(
strtoupper($param->attribute)=='FILENAME'))
                     {
                      
$filename=$param->value;
                     }
                 }
              }
          }
          
          
       
//write to disk and set partsarray variable
       
if ($filename!='')
          {
           
$partsarray[$i][attachment] = array('filename'=>$filename,'binary'=>$part);
           
$filename explode("."$filename);
           
$fp=fopen($filestore.$filename[0].$j.".".$filename[1],"w+");
           
fwrite($fp,$part);
           
fclose($fp);
          }


      }
//end if type!=0

      //if part is text
      
else if($p->type==0)
        {
         
//decode text
         //if QUOTED-PRINTABLE
         
if ($p->encoding==4)
         {
$part=quoted_printable_decode($part);}
         
//if base 64
         
if ($p->encoding==3)
         {
$part=base64_decode($part);}

         
//if plain text
         
if (strtoupper($p->subtype)=='PLAIN')1;
         
//if HTML
         
else if (strtoupper($p->subtype)=='HTML')1;
         
$partsarray[$i][text] = array('type'=>$p->subtype,'string'=>$part);
        }

   
// if subparts... recurse into function and parse them too!
   // this is a recursive call of the function
   
if (count($p->parts)>0){
       foreach (
$p->parts as $pno=>$parr){
           
parsepart($parr,($i.'.'.($pno+1)));
           }
       }
return;
}

/*=============================================*/
/*============= End of Function ===============*/
/*=============================================*/

$number_of_emails imap_num_msg($mbox);

if(
$number_of_emails>0)
{
// Number of message which will be analysed
for ($j=1;$j<=$number_of_emails;$j++)
{
$msgid $j;

//fetch structure of message
$s=imap_fetchstructure($mbox,$msgid);

 
/*================================================================*/
 
  //checks if there are any parts
  
if (count($s->parts)>0)
   {
    foreach (
$s->parts as $partno=>$partarr)
     {
      
//parse parts of email
      
parsepart($partarr,$partno+1);
     }
   }
  
//for not multipart messages
  
else{
       
//gets the full/whole body of the message
       
$text=imap_body($mbox,$msgid);
       
//decode if quoted-printable
       
if ($s->encoding==4$text=quoted_printable_decode($text);
       
//OPTIONAL PROCESSING
       
if (strtoupper($s->subtype)=='PLAIN'$text=$text;
       if (
strtoupper($s->subtype)=='HTML'$text=$text;

       
$partsarray['not multipart'][text]=array('type'=>$s->subtype,'string'=>$text);
      }
      
 
/*================================================================*/

// shows all parts
print_r($partsarray);
}
}

// close connection
imap_close ($mbox); 
gruss galaxy
Mit Zitat antworten
  #4 (permalink)  
Alt 19-01-2006, 08:25
sunshine_85
 Newbie
Links : Onlinestatus : sunshine_85 ist offline
Registriert seit: Jan 2006
Ort: Geboren in Paderborn, Aufgewachsen in Borchen, Wohne in Brakel
Beiträge: 3
sunshine_85 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Dankeschön

Hallo Galaxy,

Dankeschön. Hat mir schon ne ganze Ecke weitergeholfen.
Quäle mich nur gerade ein bisschen durch die variablen, weil nicht alle in dem Code deklariert sind.

Gruß

Sunshine
__________________
--------------------------------------------
Lebe lieber ungewöhnlich!!
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 23:27 Uhr.