Мне нужно подключиться к учетной записи Gmail через IMAP
с помощью PHP
. У меня есть рабочий код, но при попытке установить соединение я получаю следующую ошибку:
Предупреждение: imap_open () [function.imap-open]: не удалось открыть поток {imap.gmail.com:993/ssl}[Gmail]/All Mail в /home/demoosiz/public_html/goqlue/email.php в сети 31
Не удается подключиться к Gmail: сбой сертификата для imap.gmail.com: невозможно получить сертификат локального эмитента: / C = US / O = Google Inc / CN = Google Internet Authority
мой код ниже
<?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); ?>
Кажется, это проблема с сертификатом.
Я не говорю вам, что такое проблема с сертификатом и как его решить.
Однако вы можете оставить свою учетную запись gmail открытой для атак, игнорируя эту проблему, отключив проверку сертификата :
$hostname = '{imap.gmail.com:993/ssl/novalidate-cert}[Gmail]/All Mail';
Не удается подключиться к Gmail: сбой сертификата для imap.gmail.com: невозможно получить сертификат локального эмитента: / C = US / O = Google Inc / CN = Google Internet Authority
В системе, в которой выполняется код, отсутствует этот сертификат. Существует не так много, что можно сказать об этом информацией, которую вы предоставили с вашим вопросом. Обратитесь к системной документации операционной системы, в которой у вас есть, как установить сертификаты и как получить необходимый сертификат.
См. Также: