Clase para leer correo por imap desde PHP

Email, correo

Email

En ocasiones, necesitamos leer correo desde un script PHP, he creado esta simple clase que sirve para tal labor. Espero les sirva, ¡saludos!

class mail_reader
{
    private $connect_to;
    private $connection;
    private $user;
    private $password;
    private $emails;
    private $unseen;

    public function __construct($connect_to, $user, $password)
    {
        $this -> connect_to = $connect_to;
        $this -> user = $user;
        $this -> password = $password;

        $this -> connection = imap_open($connect_to, $user, $password)
            or die("Can't connect to '$connect_to': " . imap_last_error());

        $this -> emails = imap_search($this -> connection,'ALL');
        $this -> unseen = imap_search($this -> connection,'UNSEEN');
        rsort($this -> emails);
    }

    public function email($number)
    {
        $email = imap_fetch_overview($this -> connection, $number, 0);
        return $email[0];
    }

    public function message($number)
    {
        $info = imap_fetchstructure($this -> connection, $number, 0);

        if($info -> encoding == 3){
            $message = base64_decode(imap_fetchbody($this -> connection, $number, 1));
        }
        elseif($info -> encoding == 4){
            $message = imap_qprint(imap_fetchbody($this -> connection, $number, 1));
        }
        else
        {
            $message = imap_fetchbody($this -> connection, $number, 1);
        }
        //$message = imap_fetchbody($this -> connection, $number, 2);
        return decode_qprint($message);
    }

    public function __destruct() {
       imap_close($this -> connection);
    }

    public function __get($var)
    {
        $temp = strtolower($var);
        if (property_exists('mail_reader', $temp))
        {
            return $this->$temp;
        }
        return NULL;
    }
}

/*Funcion para decodificar los mensajes*/

function decode_qprint($str)
{
	$str = preg_replace("/\=([A-F][A-F0-9])/","%$1",$str);
	$str = urldecode($str);
	$str = utf8_encode($str);
	return $str;
}
Anuncios
Acerca de

Programador, usuario Linux e hincha de Millonarios de Colombia

Tagged with: , , , , , , , , , ,
Publicado en codigo, php, programacion
6 comments on “Clase para leer correo por imap desde PHP
  1. jaime dice:

    desculpa la ignorancioa y como implemento esta clase

  2. Miguel dice:

    Muy bien, pero como se usa?

  3. D3adly dice:

    Muy bueno amigo gracias…

  4. ProSystem dice:

    Aprenda que debe comentar las lineas de su código

  5. Juan Carlos gonzalez dice:

    No lo implemente completo, solo necesitaba el método de leer el mensaje y funciono buenisimo. gracias.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Sígueme en Twitter
Categorías
Flickr Photos
¡Apareció Linux!

Mirando de lado

Café

Más fotos
A %d blogueros les gusta esto: