connect gmail through php imap? local issuer certificate error [duplicate]

匿名 (未验证) 提交于 2019-12-03 03:03:02

问题:

This question already has an answer here:

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

回答1:

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'; 


回答2:

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:



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!