servidor gratis cuál correo configurar php pop3

php - gratis - smtp gmail



Obtención de correo desde un servidor POP3 usando php (4)

Estoy intentando buscar un correo de POP3 (estoy usando el servidor de correo POP3 y estoy tratando de buscar el contenido del correo y almacenarlo en una tabla de base de datos para mi proyecto), pero no puedo encontrar ningún script PHP para eso, todo son solo para IMAP.

¿Sabes cómo recuperar el correo de un servidor POP3?

Gracias.


De manera algo sorprendente, la biblioteca imap de PHP también se puede usar para trabajar con buzones POP3. La mayoría de las características avanzadas de IMAP no funcionarán, por supuesto (por ejemplo, carpetas o recuperar partes de mensajes), pero se implementa la funcionalidad básica de POP3.

La principal diferencia es la cadena de opciones que está pasando a imap_open , para citar esa página:

// To connect to a POP3 server on port 110 on the local server, use: $mbox = imap_open ("{localhost:110/pop3}INBOX", "user_id", "password");

Aparte de eso, es una navegación justa: no necesitará más que imap_open, imap_num_msg, imap_body, imap_delete e imap_close para el acceso POP3 básico.


Si tiene PHP compilado con soporte IMAP, sería fácil, consulte la documentación de IMAP (especialmente los comentarios en esta página) en http://php.net/manual/en/book.imap.php

ACTUALIZACIÓN: para aclarar mi respuesta: como puede ver en los comentarios y en la referencia de función, las funciones PHP imap_ * también se pueden usar para pop3.



Las funciones IMAP de PHP pueden ocuparse de los cuadros IMAP y POP3.

Estas funciones le permiten operar con el protocolo IMAP, así como con los métodos de acceso a buzones locales NNTP, POP3.

Tenga en cuenta, sin embargo, que algunas funciones IMAP no funcionarán correctamente con el protocolo POP.

hay una nota contribuida por el usuario que proporciona un fragmento de código interesante. Puede que quieras echarle un vistazo. No puedo decir nada sobre su calidad, pero desde la superficie, se ve bien.

A continuación, la Nota contribuida:

Para todas las personas que vienen aquí orando por:

1) una manera fácil de leer los archivos adjuntos MIME, o

2) una manera fácil de acceder a las carpetas POP3

No busque más.

function pop3_login($host,$port,$user,$pass,$folder="INBOX",$ssl=false) { $ssl=($ssl==false)?"/novalidate-cert":""; return (imap_open("{"."$host:$port/pop3$ssl"."}$folder",$user,$pass)); } function pop3_stat($connection) { $check = imap_mailboxmsginfo($connection); return ((array)$check); } function pop3_list($connection,$message="") { if ($message) { $range=$message; } else { $MC = imap_check($connection); $range = "1:".$MC->Nmsgs; } $response = imap_fetch_overview($connection,$range); foreach ($response as $msg) $result[$msg->msgno]=(array)$msg; return $result; } function pop3_retr($connection,$message) { return(imap_fetchheader($connection,$message,FT_PREFETCHTEXT)); } function pop3_dele($connection,$message) { return(imap_delete($connection,$message)); } function mail_parse_headers($headers) { $headers=preg_replace(''//r/n/s+/m'', '''',$headers); preg_match_all(''/([^: ]+): (.+?(?:/r/n/s(?:.+?))*)?/r/n/m'', $headers, $matches); foreach ($matches[1] as $key =>$value) $result[$value]=$matches[2][$key]; return($result); } function mail_mime_to_array($imap,$mid,$parse_headers=false) { $mail = imap_fetchstructure($imap,$mid); $mail = mail_get_parts($imap,$mid,$mail,0); if ($parse_headers) $mail[0]["parsed"]=mail_parse_headers($mail[0]["data"]); return($mail); } function mail_get_parts($imap,$mid,$part,$prefix) { $attachments=array(); $attachments[$prefix]=mail_decode_part($imap,$mid,$part,$prefix); if (isset($part->parts)) // multipart { $prefix = ($prefix == "0")?"":"$prefix."; foreach ($part->parts as $number=>$subpart) $attachments=array_merge($attachments, mail_get_parts($imap,$mid,$subpart,$prefix.($number+1))); } return $attachments; } function mail_decode_part($connection,$message_number,$part,$prefix) { $attachment = array(); if($part->ifdparameters) { foreach($part->dparameters as $object) { $attachment[strtolower($object->attribute)]=$object->value; if(strtolower($object->attribute) == ''filename'') { $attachment[''is_attachment''] = true; $attachment[''filename''] = $object->value; } } } if($part->ifparameters) { foreach($part->parameters as $object) { $attachment[strtolower($object->attribute)]=$object->value; if(strtolower($object->attribute) == ''name'') { $attachment[''is_attachment''] = true; $attachment[''name''] = $object->value; } } } $attachment[''data''] = imap_fetchbody($connection, $message_number, $prefix); if($part->encoding == 3) { // 3 = BASE64 $attachment[''data''] = base64_decode($attachment[''data'']); } elseif($part->encoding == 4) { // 4 = QUOTED-PRINTABLE $attachment[''data''] = quoted_printable_decode($attachment[''data'']); } return($attachment); }