Leer correos de la cuenta de Gmail usando PHP será una tarea enriquecedora para los desarrolladores web por su sencillez de código a través de IMAP (Protocolo de Acceso a Mensajes de Internet). A veces puede haber un requerimiento en proyectos web o de un cliente que necesita la gestión completa de los correos electrónicos de la bandeja de entrada o el acceso a los contenidos del correo electrónico desde su cuenta de Gmail. Esta característica también puede ser útil en marketing por correo electrónico o boletines por correo electrónico que se enviarán automáticamente en un horario particular. Entonces, mientras investiga el acceso a la cuenta de Gmail, debe intentar enumerar los correos electrónicos de la cuenta de Gmail usando PHP y su extensión de funciones IMAP.
IMAP es un protocolo estándar de Internet utilizado por los clientes para recibir correos electrónicos de un servidor de correo a través de una conexión TCP/IP con seguridad SSL. La extensión IMAP disponible en las bibliotecas de PHP proporciona un procesamiento eficiente de su estructura de correo electrónico y acceso a los mensajes de correo electrónico a través de la comunicación con los servidores de correo electrónico.
Usamos código PHP para conectarnos al servidor de Gmail y usamos funciones IMAP estándar para abrir la cuenta de Gmail y acceder o buscar correos electrónicos según ciertos criterios.
Requisitos básicos: Se necesitan los siguientes para el desarrollo de la funcionalidad.
- PHP5 o la última versión de PHP.
- Habilite la extensión IMAP en la instalación de PHP.
- En la configuración de la cuenta de Gmail, IMAP debe estar habilitado.
Pasos para habilitar IMAP en XAMPP:
- Ir al archivo de configuración php.ini
- Busque “;extensión=php_imap.dll”
- Elimine el comienzo del punto y coma y debería ser «extensión = php_imap.dll»
- Edite también max_execution_time = 4000
Pasos para habilitar IMAP en la cuenta de Gmail:
- Abre Gmail.
- Haga clic en Configuración.
- Seleccione la pestaña azul Reenvío y POP/IMAP.
- Seleccione la sección «Acceso IMAP:» y el botón de radio Habilitar IMAP.
- Haga clic en Guardar cambios.
- No olvide activar el acceso para aplicaciones menos seguras para la cuenta de Gmail.
Nota: Para aplicaciones normales, un servidor IMAP escucha en el número de puerto 143.
Código PHP: el siguiente es el código HTML y PHP para enumerar los correos electrónicos de la cuenta de Gmail. Para conectarse a Gmail, el desarrollador necesita que el «nombre de usuario» y la «contraseña» de la persona se establezcan en el código. Una vez conectado, buscamos todos los correos electrónicos o correos electrónicos según ciertos criterios mediante el uso de la función imap_search() . Los correos electrónicos se ordenan de forma inversa para que los últimos correos estén disponibles en la parte superior utilizando la función PHP rsort() . Esta función de PHP ordena una array en orden descendente. Para cada correo electrónico devuelto, se capturan el asunto, el remitente, el contenido parcial y los mensajes de fecha y hora. La función imap_fetchbody() obtiene una sección particular del cuerpo del correo electrónico. Entonces, para obtener la parte de texto sin formato del correo electrónico, podemos usar la opción «1.1» como tercer parámetro.
HTML
<!DOCTYPE html> <html> <head> <link rel="stylesheet" href= "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> <link rel="stylesheet" href="style.css"> <script> function getEmails() { document.getElementById('dataDivID') .style.display = "block"; } </script> </head> <body> <h2>List Emails from Gmail using PHP and IMAP</h2> <div id="btnContainer"> <button class="btn active" onclick="getEmails()"> <i class="fa fa-bars"></i>Click to get gmail mails </button> </div> <br> <div id="dataDivID" class="form-container" style="display:none;"> <?php /* gmail connection,with port number 993 */ $host = '{imap.gmail.com:993/imap/ssl/ novalidate-cert/norsh}INBOX'; /* Your gmail credentials */ $user = 'YOUR-EMAIL@GMAIL.COM'; $password = 'YOUR-PASSWORD'; /* Establish a IMAP connection */ $conn = imap_open($host, $user, $password) or die('unable to connect Gmail: ' . imap_last_error()); /* Search emails from gmail inbox*/ $mails = imap_search($conn, 'SUBJECT "Comment"'); /* loop through each email id mails are available. */ if ($mails) { /* Mail output variable starts*/ $mailOutput = ''; $mailOutput.= '<table><tr><th>Subject </th><th> From </th> <th> Date Time </th> <th> Content </th></tr>'; /* rsort is used to display the latest emails on top */ rsort($mails); /* For each email */ foreach ($mails as $email_number) { /* Retrieve specific email information*/ $headers = imap_fetch_overview($conn, $email_number, 0); /* Returns a particular section of the body*/ $message = imap_fetchbody($conn, $email_number, '1'); $subMessage = substr($message, 0, 150); $finalMessage = trim(quoted_printable_decode($subMessage)); $mailOutput.= '<div class="row">'; /* Gmail MAILS header information */ $mailOutput.= '<td><span class="columnClass">' . $headers[0]->subject . '</span></td> '; $mailOutput.= '<td><span class="columnClass">' . $headers[0]->from . '</span></td>'; $mailOutput.= '<td><span class="columnClass">' . $headers[0]->date . '</span></td>'; $mailOutput.= '</div>'; /* Mail body is returned */ $mailOutput.= '<td><span class="column">' . $finalMessage . '</span></td></tr></div>'; }// End foreach $mailOutput.= '</table>'; echo $mailOutput; }//endif /* imap connection is closed */ imap_close($conn); ?> </div> </body> </html>
Código CSS: El siguiente es el código para el archivo «style.css» utilizado en el código anterior.
CSS
body { font-family: Arial; } table { font-family: arial, sans-serif; border-collapse: collapse; width: 100%; } tr:nth-child(even) { background-color: #dddddd; } td, th { padding: 8px; width:100px; border: 1px solid #dddddd; text-align: left; } .form-container { padding: 20px; background: #F0F0F0; border: #e0dfdf 1px solid; border-radius: 2px; } * { box-sizing: border-box; } .columnClass { float: left; padding: 10px; } .row:after { content: ""; display: table; clear: both; } .btn { background: #333; border: #1d1d1d 1px solid; color: #f0f0f0; font-size: 0.9em; width: 200px; border-radius: 2px; background-color: #f1f1f1; cursor: pointer; } .btn:hover { background-color: #ddd; } .btn.active { background-color: #666; color: white; }
Salida: La siguiente es la salida que se muestra para los correos electrónicos recuperados con el asunto «Comentario».
Publicación traducida automáticamente
Artículo escrito por geetanjali16 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA