Foros del Web » Programando para Internet » PHP »

Aporte: leer gmail con IMAP y marcar importante

Estas en el tema de Aporte: leer gmail con IMAP y marcar importante en el foro de PHP en Foros del Web. No sé donde poner aportes. Lo siento. Lee gmail de cualquier mailbox y señala si es importante el mensaje. Podéis votar si va bien o ...
  #1 (permalink)  
Antiguo 26/12/2013, 13:33
 
Fecha de Ingreso: junio-2008
Mensajes: 291
Antigüedad: 11 años, 5 meses
Puntos: 9
Aporte: leer gmail con IMAP y marcar importante

No sé donde poner aportes. Lo siento.
Lee gmail de cualquier mailbox y señala si es importante el mensaje. Podéis votar si va bien o mal

Código PHP:
// La dirección de correo electrónico y contraseña de Gmail
$username '[email protected]';
$password 'passs';
//recoger la variable de la carpeta ó asignar: {imap.gmail.com:993/imap/ssl}INBOX  donde INBOX, [Gmail]/Enviados, ETC..
$folder $_GET['folder'];
// ¿Qué carpetas o la etiqueta que desea tener acceso ? - Ejemplo: INBOX, All Mail, Trash, labelname 
//Nota: es case sensitive
$imapmainbox $folder;
echo 
$folder;
 
//Seleccionar messagestatus como ALL o UNSEEN 
$messagestatus "ALL";

 
//-------------------------------------------------------------------
 
//Gmail Connection String
$imapaddress $folder;
 
//Gmail host folder
$hostname $folder;
 
//Abrir conexion
$connection imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' imap_last_error());
 
//Grabar los emails en el inbox
$emails imap_search($connection,$messagestatus);
 
//numero de emails en el inbox
$totalemails imap_num_msg($connection);
$max_emails 5
echo 
"Total Emails: " $totalemails "<br>";
 
if(
$emails) {
  
$count 1;
  
//ordenar emails: los nuevos primero
  
rsort($emails);
 
  
//loop de cada email en el inbox
  
foreach($emails as $email_number) {
 
    
//grabar headers y mensaje
    
$header imap_fetch_overview($connection,$email_number,0);
 
    
// Porque los archivos adjuntos pueden ser problemáticas esta lógica es por defecto para saltarse los archivos adjuntos  
    
$message imap_fetchbody($connection,$email_number,1.1);
         if (
$message == "") { //no hay archivos adjuntos es logico
          
$message imap_fetchbody($connection$email_number1);
    }
 
    
//split el header array en variables
   
$status = ($header[0]->seen 'read' 'unread');
   
$priority = ($header[0]->flagged);
    
$subject $header[0]->subject;
    
$from $header[0]->from;
    
$date $header[0]->date;
    
$uid $header[0]->msgno;
 
    echo 
"status: " $status "<br>";
    echo 
"subject: " $subject "<br>";
    echo 
"from: " $from "<br>";
    echo 
"date: " $date "<br>";
    echo 
"date: " $uid "<br>";
    echo 
"priority: " $priority "<br>";
    echo 
"message: " $message "<br><hr><br>";
 
//Aquí es donde quieres empezar a analizar tus mensajes, enviar a una base de datos o cualquier acción .
  
if($count++ >= $max_emails) break;
  }  
} else{echo 
"error";}
 
// cerrar la conexión
imap_close($connection); 

Última edición por charlyta; 26/12/2013 a las 15:49
  #2 (permalink)  
Antiguo 23/01/2014, 13:51
 
Fecha de Ingreso: febrero-2009
Mensajes: 9
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Aporte: leer gmail con IMAP y marcar importante

$hostname = '{ssl://imap.gmail.com:995/imap}INBOX';
$username = '[email protected]';
$password = 'contraseña';


/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());

/* grab emails */
$emails = imap_search($inbox,'ALL');

tarda un tiempo y luego dice:

Cannot connect to Gmail: [CLOSED] IMAP connection broken (server response)

tambienh eprobado:

$hostname = '{imap.gmail.com:993/imap/ssl/novalidate-cert}Inbox';
y
$hostname = '{imap.gmail.com:995/imap/ssl/novalidate-cert}Inbox';

Etiquetas: gmail, imap, importante, marcar, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:45.