I need to connect to a Gmail account via IMAP
using PHP
. I have some working code, but when attempting to establish a connection, I receive the following error:
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
my code is below
<?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);
?>
This seems to be a certificate issue.
I don't tell you what the certificate issue is nor how to solve it.
However, you can leave your gmail account open to attacks by ignoring that issue disabling the certificate validation:
$hostname = '{imap.gmail.com:993/ssl/novalidate-cert}[Gmail]/All Mail';
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
The system you execute the code on is missing that certificate. There is not much more that can be said about this by the information you provided with your question. Consult the system documentation of the operating system you have how to install certificates and how to aquire the needed certificate.
See as well:
来源:https://stackoverflow.com/questions/15242455/connect-gmail-through-php-imap-local-issuer-certificate-error