Tu propio gestor de correos con PHP

Ya hemos visto como enviar correos con PHP utilizando phpmailer, correos con adjuntos y con todas las posibilidades, ahora veamos como recibir y leer los correos que nos envían a nuestro buzón con la clase receivemail.

Incluimos la clase
include_once '../clases/receivemail.class.php';
// Creamos el objeto receivemail, es importante en esta función poner solo los 4 parámetros siguientes, en la mayoria de servidores de correo da fallo si incluimos el 5 parámetro el cual en teoría es para servidores que requieren autentificación, pero en la práctica no es necesario.
// Algunos de los errores que nos pueden dar son los siguientes:

  • Warning: imap_open() [function.imap-open]: Couldn't open stream {(host):(puerto)/(protocolo)}INBOX in (url_codigo) on line (linea)

  • Certificate failure for (host): self signed certificate: (url_certificado)


$obj= new receiveMail(USUARIO,CLAVE,DIRECCION_DE_CORREO,SERVIDOR);

// Connectar al buzon de correo por defecto pop3 y puerto 110

$obj->connect();

// Total de mensajes en la bandeja de entrada

$obj->getTotalMails();

// Obtenemos la cabecera del mensaje $i, nos devuelve un array con los siguientes valores

$obj->getHeaders($i);
echo "Títuo :: ".$head['subject']."
";
echo "A :: ".$head['to']."
";
echo "CC :: ".$head['toOth']."
";
echo "CCO :: ".$head['toNameOth']."
";
echo "Enviado Por (email):: ".$head['from']."
";
echo "Enviado Por (nombre):: ".$head['fromName']."
";

// Cuerpo del mensaje
$obj->getBody($i);
// Borra el mensaje
$obj->deleteMails($i);
// Adjuntos separados los nombres de los mismo por comas (mail_id, ruta donde se almacena el archivo)

$str=$obj->GetAttech($i,"./");
$ar=explode(",",$str);
foreach($ar as $key=>$value)
echo ($value=="")?"":"Atteched File :: ".$value."
";

// Cerrar el buzón de correo
$obj->close_mailbox();

Fin del código, adaptado de un código de Mitul Koradia de marzo de 2006.

Comentarios

Julian ha dicho que…
Hola

me gustaria saber como darle solucion a los errores que planteas, y tambien como hacer para que se conecte. a mi me ha generado

Warning: imap_open() [function.imap-open]: Couldn't open stream {x.x.x.x:110/pop3} INBOX in C:\wamp\www\receive-mail\receivemail.class.php on line 43

Warning: imap_headers() expects parameter 1 to be resource, boolean given in C:\wamp\www\receive-mail\receivemail.class.php on line 118
Total Mails:: 0

Warning: imap_close() expects parameter 1 to be resource, boolean given in C:\wamp\www\receive-mail\receivemail.class.php on line 169

Notice: Unknown: Can't open mailbox {x.x.x.x:110/pop3} INBOX: invalid remote specification (errflg=2) in Unknown on line 0


Gracias
Reynier de la Rosa ha dicho que…
El primer error es el que importa el resto de errores derivan de ese, debes de tener algún problema conectándote con tu servidor remoto, comprueba que acepta el protocolo pop3 y que los parámetros son los correctos, eso es un error bastante genérico.
Anónimo ha dicho que…
Hola Reynier, que tal ?

Me pregunto si sería posible crear un script que extraiga el mensaje del correo electrónico y modifique ( ya sea eliminando , añadiendo o reemplazando) ciertas palabras del mensaje definiéndolo previamente en el script y posteriormente enviar el mensaje modificado.

Gracias.
Reynier de la Rosa ha dicho que…
Por supuesto que si, con la clase de este post puedes recibir el correo, luego puedes procesar el contenido del correo con expresiones regulares y luego enviarlo con PHPMailer. Para obtener el contenido de un correo busca un poco sobre las funciones imap de PHP.