2013-03-06 6 views
5

Devo connettermi a un account Gmail tramite IMAP utilizzando PHP. Ho qualche codice di lavoro, ma quando si tenta di stabilire una connessione, ricevo il seguente errore:connetti gmail tramite php imap? Errore certificato emittente locale

Warning: imap_open() [function.imap-open]: Couldn't open stream {imap.gmail.com:993/ssl}[Gmail]/All Mail in /home/demoosiz/public_html/goqlue/email.php on line 31
Cannot connect to Gmail: Certificate failure for imap.gmail.com: unable to get local issuer certificate: /C=US/O=Google Inc/CN=Google Internet Authority

il mio codice è sotto

<?php 
    /* connect to gmail */ 
    $hostname = '{imap.gmail.com:993/ssl}[Gmail]/All Mail'; 
    $username = 'hidden'; 
    $password = 'hidden'; 

    /* 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'); 

    /* if emails are returned, cycle through each... */ 
    if($emails) { 

     /* begin output var */ 
     $output = ''; 

     /* put the newest emails on top */ 
     rsort($emails); 

     /* for every email... */ 
     foreach($emails as $email_number) { 

     /* get information specific to this email */ 
     $overview = imap_fetch_overview($inbox,$email_number,0); 
     $message = imap_fetchbody($inbox,$email_number,2); 

     /* output the email header information */ 
     $output.= '<div class="toggler '.($overview[0]->seen ? 'read' : 'unread').'">'; 
     $output.= '<span class="subject">'.$overview[0]->subject.'</span> '; 
     $output.= '<span class="from">'.$overview[0]->from.'</span>'; 
     $output.= '<span class="date">on '.$overview[0]->date.'</span>'; 
     $output.= '</div>'; 

     /* output the email body */ 
     $output.= '<div class="body">'.$message.'</div>'; 
     } 

     echo $output; 
    } 

    /* close the connection */ 
    imap_close($inbox); 
    ?> 
+0

stai testando in XAMPP? – Iraklis

+0

Hai appena inserito il login e la password nel tuo account di posta? –

+0

Sì, ha fatto. Hai già inviato una modifica per rimuoverlo – Iraklis

risposta

6

Questo sembra essere un problema di certificato.

Non ti dico quale sia il problema del certificato né come risolverlo.

Tuttavia, è possibile lasciare il tuo account Gmail aperti agli attacchi da ignorando tale questione disabilitando la convalida del certificato:

$hostname = '{imap.gmail.com:993/ssl/novalidate-cert}[Gmail]/All Mail'; 
+3

Non risolvi i problemi dei certificati * ignorando * i certificati. Questa è una pessima pratica. E a malapena uguali a fornire password in testo semplice. – hakre

+0

Accetto, ma con le informazioni limitate dell'OP, questo di solito accade in XAMMP. Se prova questo e questo funziona, può quindi continuare a gestirlo ulteriormente, come caricare i certificati da un file. – Iraklis

+0

Ho modificato la tua risposta, per favore controlla se ciò riflette meglio ciò che vuoi suggerire. Ho provato a usare un linguaggio facile da capire ma potresti trovarlo offensivo. – hakre

3

Cannot connect to Gmail: Certificate failure for imap.gmail.com: unable to get local issuer certificate: /C=US/O=Google Inc/CN=Google Internet Authority

Il sistema si esegue il codice sul manca tale certificato. Non c'è molto altro da dire a proposito delle informazioni fornite con la tua domanda. Consultare la documentazione di sistema del sistema operativo in cui si dispone come installare i certificati e come acquisire il certificato necessario.

Vedi pure: