2013-03-06 5 views
5

Ich muss eine Verbindung zu einem Google Mail-Konto über IMAP mit PHP herstellen. Ich habe einige Arbeits Code, aber wenn eine Verbindung herzustellen versucht, erhalte ich folgende Fehlermeldung:gmail über php imap verbinden? Lokaler Ausstellerzertifikat Fehler

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

mein Code unter

<?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

testen Sie in XAMPP? – Iraklis

+0

Haben Sie gerade den Login und das Passwort an Ihr Mailkonto gesendet? –

+0

Ja, hat er getan. Sie haben bereits eine Änderung eingegeben, um sie zu entfernen. – Iraklis

Antwort

6

Dies scheint ein Zertifikat Thema.

Ich erzähle Ihnen nicht, was das Zertifikat Problem ist noch, wie es zu lösen ist.

jedoch Sie Ihr Google Mail-Konto offen für Angriffe von ignorieren diese Frage Deaktivieren der Zertifikatsüberprüfung verlassen können:

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

Sie lösen Zertifikatsprobleme nicht durch * Ignorieren * von Zertifikaten. Das ist sehr schlechte Praxis. Und genauso wenig wie die Bereitstellung von Passwörtern im Klartext. – hakre

+0

Ich stimme zu, aber mit den begrenzten Informationen des OP passiert dies normalerweise in XAMMP. Wenn er das versucht und das funktioniert, kann er sich weiter damit beschäftigen, wie das Laden von Zertifikaten aus einer Datei. – Iraklis

+0

Ich habe Ihre Antwort bearbeitet, bitte überprüfen Sie, ob das besser widerspiegelt, was Sie vorschlagen möchten. Ich habe versucht, Sprache zu verwenden, die leicht zu verstehen ist, aber Sie könnten sie beleidigend finden. – 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

Das System Sie den Code ausführen, auf das Zertifikat fehlt. Über die Informationen, die Sie mit Ihrer Frage erhalten haben, kann nicht viel mehr gesagt werden. Sehen Sie in der Systemdokumentation des Betriebssystems nach, wie Sie Zertifikate installieren und wie Sie das benötigte Zertifikat erwerben können.

Siehe auch: