Benutzer-Werkzeuge

Webseiten-Werkzeuge


php:imap

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
php:imap [2020/10/18 17:11]
webproducer angelegt
php:imap [2022/08/17 10:49] (aktuell)
webproducer SSL ergänzt
Zeile 15: Zeile 15:
     private $username ​  = '';​     private $username ​  = '';​
     private $password ​  = '';​     private $password ​  = '';​
 +    private $port       = 143;
 +    private $type       = '​IMAP';​
 +    private $ssl        = true;
  
     /**     /**
Zeile 23: Zeile 26:
     public function getEmails( $onlyUnread = false )     public function getEmails( $onlyUnread = false )
     {     {
-        $mailbox = sprintf( "{%s:143}INBOX",​ $this->​server );+        ​$ssl = '';​ 
 +     
 +        if( $this->​ssl ) 
 +        { 
 +            $ssl = '/​ssl';​ 
 +        } 
 +     
 +        ​$mailbox = sprintf( "{%s:%d/​%s%s/​novalidate-cert}INBOX",​ $this->​server, $this->​port,​ $this->​type,​ $ssl );
         $this->​stream = imap_open( $mailbox, $this->​username,​ $this->​password );         $this->​stream = imap_open( $mailbox, $this->​username,​ $this->​password );
         $MC = imap_check( $this->​stream );         $MC = imap_check( $this->​stream );
Zeile 46: Zeile 56:
         $body = imap_fetchbody( $this->​stream,​ $uid, 1 );         $body = imap_fetchbody( $this->​stream,​ $uid, 1 );
         return imap_qprint( $body );         return imap_qprint( $body );
 +    }
 +
 +    /**
 +     * @param string $uid
 +     * @return bool|string
 +     */
 +    public function getAttachments( $uid )
 +    {
 +        $structure = imap_fetchstructure( $this->​stream,​ $uid );
 +
 +        foreach( $structure->​parts as $key=>​$part )
 +        {
 +            if( isset( $part->​disposition ) && $part->​disposition === '​attachment'​ )
 +            {
 +                $attachment = imap_fetchbody( $this->​stream,​ $uid, $key+1, FT_INTERNAL );
 +                return str_replace( '​=0A=',​ '',​ $attachment ); // Zeilenumbrueche
 +            }
 +        }
 +
 +        return false;
     }     }
  
     public function close()     public function close()
     {     {
-        imap_close( $this->​stream );+        ​if( $this->​stream !== false ) 
 +        { 
 +            ​imap_close( $this->​stream ); 
 +        }
     }     }
 } }
Zeile 74: Zeile 107:
  
 Mit [[php:​preg|regulären Ausdrücken]] wäre es jetzt z. B. Möglich, den Inhalt der E-Mails nach bestimmten Inhalten zu parsen. Mit [[php:​preg|regulären Ausdrücken]] wäre es jetzt z. B. Möglich, den Inhalt der E-Mails nach bestimmten Inhalten zu parsen.
 +
 +----
 +
 +===== Beispiel für Dateianhänge (Attachments) =====
 +
 +<code php>
 +$imap = new imap();
 +$emails = $imap->​getEmails( true );
 +
 +foreach( $emails as $email )
 +{
 +    $attachment = $imap->​getAttachments( $email->​uid );
 +
 +    if( $attachment !== false )
 +    {
 +        echo "​Anhang gefunden: " . $attachment;​
 +    }
 +}
 +</​code>​
php/imap.1603033904.txt.gz · Zuletzt geändert: 2020/10/18 17:11 von webproducer