Intereting Posts
Проблема с функцией удаления акцентов и других символов в PHP сделать номер телефона доступным для вызова экрана на мобильном телефоне? Добавить переменную php внутри инструкции echo как адрес ссылки href? PHP-скрипт выполняется дважды, когда более 60 секунд Передача данных в памяти на FTP-сервер без использования промежуточного файла PHP MYSQL: способ отображения таблицы в порядке возрастания Требуется ли mysql_real_escape_string () при использовании подготовленных операторов? PHP в HTML-странице, Super Quick Advice PHP – максимальный размер запроса MySQL PDO Финал: AJAX / jQuery / PHP Форма представления и модальная коробка открываются с успехом Как получить доступ к переменной PHP в JavaScript-коде? Как извлечь название сайта? Как найти mime-тип файла с php? Неустранимая ошибка: вызов функции-члена fetch_array () для не-объекта в Как узнать, что php-файл включен или доступен напрямую?

Подключение к Gmail через IMAP с использованием PHP-SSL

Я пытаюсь подключиться к Gmail через IMAP с PHP, работающим в Apache. Это находится на системе Ubuntu 9.04. У меня есть какая-то проблема с настройкой PHP, которая не позволяет этому работать. Во-первых, вот что я сделал для настройки IMAP для PHP:

sudo apt-get install libc-client2007b libc-client2007b-dev sudo apt-get install php5-imap sudo /etc/init.d/apache2 start 

Когда я запускаю phpinfo (), я получаю следующие значения imap:

 IMAP c-Client Version: 2004 SSL Support: enabled Kerberos Support: enabled 

Вот мой пример кода:

 <?php $connect_to = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX'; $user = 'my gmail address'; $password = 'my gmail password'; $connection = imap_open($connect_to, $user, $password) or die("Can't connect to '$connect_to': " . imap_last_error()); imap_close($connection); ?> 

Когда я выполняю этот код, я получаю следующий вывод:

 Warning: imap_open() [function.imap-open]: Couldn't open stream {imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX in /var/www/clint/gmail/gmail.php on line 10 Can't connect to '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX': TLS/SSL failure for imap.gmail.com: SSL context failed 

Обратите внимание, что я могу использовать telnet для imap.gmail.com:993 с этого компьютера. Я также могу подключить Evolution (mail reader) к Gmail через IMAP и получать почту без проблем. Итак, я не думаю, что это проблема межсетевого экрана. Я уверен, что у меня есть что-то в PHP, неправильно настроенное.

Есть идеи?

Еще одна дополнительная вещь, которую нужно включить в PHP, – это расширение OpenSSL . Похоже, от этого зависит библиотека клиента IMAP (с SSL).

Не имеет значения, включен ли Apache модуль OpenSSL, поскольку он обрабатывается / обрабатывается до того, как запрос передается на PHP.

Следующая дискуссия может помочь пролить свет:

http://groups.google.com/group/comp.lang.php/browse_thread/thread/241e619bc70a8bf4/bd3ae0c6a82409bc?lnk=raot&pli=1

Это сработало для меня после долгих усилий:

 $ServerName = "{imap.gmail.com:993/imap/ssl/novalidate-cert/norsh}Inbox"; 

Я столкнулся с такой же проблемой. Я использую windows и wamp, а расширение wash open Open открыто.

Я удалил эту проблему, используя следующие шаги. Я надеюсь, что это сработает и для вас.

1) Вход в систему через браузер для учетной записи gmail.

2) Откройте этот URL-адрес « https://www.google.com/settings/security/lesssecureapps »

3) Нажмите «Включить»,

4) попробуйте следующий код

 <?php set_time_limit(4000); // Connect to gmail //$imapPath = '{imap.gmail.com:993/imap/ssl}INBOX'; $imapPath = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX'; $username = 'your-emai-address@gmail.com'; $password = 'Your-password'; // try to connect $inbox = imap_open($imapPath,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error()); /* ALL - return all messages matching the rest of the criteria ANSWERED - match messages with the \\ANSWERED flag set BCC "string" - match messages with "string" in the Bcc: field BEFORE "date" - match messages with Date: before "date" BODY "string" - match messages with "string" in the body of the message CC "string" - match messages with "string" in the Cc: field DELETED - match deleted messages FLAGGED - match messages with the \\FLAGGED (sometimes referred to as Important or Urgent) flag set FROM "string" - match messages with "string" in the From: field KEYWORD "string" - match messages with "string" as a keyword NEW - match new messages OLD - match old messages ON "date" - match messages with Date: matching "date" RECENT - match messages with the \\RECENT flag set SEEN - match messages that have been read (the \\SEEN flag is set) SINCE "date" - match messages with Date: after "date" SUBJECT "string" - match messages with "string" in the Subject: TEXT "string" - match messages with text "string" TO "string" - match messages with "string" in the To: UNANSWERED - match messages that have not been answered UNDELETED - match messages that are not deleted UNFLAGGED - match messages that are not flagged UNKEYWORD "string" - match messages that do not have the keyword "string" UNSEEN - match messages which have not been read yet*/ // search and get unseen emails, function will return email ids $emails = imap_search($inbox,'UNSEEN'); $output = ''; foreach($emails as $mail) { $headerInfo = imap_headerinfo($inbox,$mail); $output .= $headerInfo->subject.'<br/>'; $output .= $headerInfo->toaddress.'<br/>'; $output .= $headerInfo->date.'<br/>'; $output .= $headerInfo->fromaddress.'<br/>'; $output .= $headerInfo->reply_toaddress.'<br/>'; $emailStructure = imap_fetchstructure($inbox,$mail); //var_dump($emailStructure->parts); if(isset($emailStructure->parts)) { $output .= imap_body($inbox, $mail, FT_PEEK); } else { // } echo $output; $output = ''; } // colse the connection imap_expunge($inbox); imap_close($inbox); ?> 

УДАЧИ. 🙂

была та же проблема с личным доменом в приложениях Google. Проблема была решена путем изменения доступа к учетной записи. Просто следуйте по ссылке и включите доступ к учетной записи.

Запустите свой код из командной строки и посмотрите, сбрасывает ли php наши другие ошибки:

 php -f gmail.php 

На моем Ubuntu я сделал:

 sudo apt-get install php5-imap 

И установлена ​​система: libc-client2007b mlock libc-client2007b mlock php5-imap

Затем о том, как удалить php5 и переустановить его.

Проверьте свою настройку с помощью phpinfo() и убедитесь, что вы видите --with-imap-ssl .

Если у вас все еще есть проблемы с этим в gmail, включите «Разрешить доступ для менее безопасных приложений» на странице настроек безопасности учетных записей Google.

  1. Во-первых, включите менее безопасные приложения в своей учетной записи Gmail: https://myaccount.google.com/lesssecureapps введите описание изображения здесь

  2. Используйте эту конфигурацию для создания IMAP-соединения:

     $imap_connection = imap_open('{imap.gmail.com:993/imap/ssl/novalidate- cert}INBOX', 'YOUR GMAIL USER', 'YOUR GMAIL PASSWORD'); 

Примечание . INBOX – это ваш главный ящик, например, вы можете получить доступ к сообщениям с помощью: INBOX.Sent в вашем соединении.