Подключение к Gmail IMAP PHP "Не удалось открыть поток"

Есть много людей, имеющих похожие проблемы, но никто не отвечает на их вопросы. У меня есть IMAP включен в PHP, используя всю правильную информацию. Я не вижу, где я ошибаюсь.

Здесь мой код:

$hostname = '{imap.gmail.com:995/imap/ssl/novalidate-cert}'; 
$username = '[email protected]'; $password = 'password'; 
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());

print_r(imap_errors());

Не возвращать никаких ошибок, кроме:

Предупреждение: imap_open() [function.imap-open]: Не удалось открыть поток {imap.gmail.com:995/imap/ssl/novalidate-cert} в /home/a 8066360/public_html/test/imap.php в строке 6

Не удается подключиться к Gmail: невозможно подключиться к gmail-imap.l.google.com, 995: Время ожидания подключения

Я заметил, что если я сменил одиночные кавычки на `

shell_exec() отключен по соображениям безопасности...

Пожалуйста, помогите!!!

Ответ 1

Вам нужен порт 993, порт SSL IMAP.

Порт 995 - это порт SSL POP3.

Ответ 2

Я думаю, что доступ к IMAP Gmail можно получить только на порт 993.

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

Ответ 3

У меня была такая же ошибка, и я нашел другое решение. Я добавил информацию об отладке в хост:

"{imap.gmail.com:993/debug/imap/ssl/novalidate-cert}INBOX"; 

Когда я прочитал журнал ошибок php, я нашел

Unknown: [ALERT] Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure) (errflg=1) in Unknown on line 0

Откройте ссылку и следуйте инструкциям. Поиск

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

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

Затем он работает для меня.

Ответ 4

Вы можете настроить двухэтапную аутентификацию, а затем назначить пароль APP для использования в ваших запросах (просто замените свой пароль на тот, который указан для приложения, ваш обычный пароль не изменяется.).

Это поможет вашему script запустить с любого хоста без блокировки Google (из-за изменения местоположения входа).

Ответ 5

Вы можете попробовать следующий код, notls аргумент notls и подключив сервер следующим образом, если SSL не применяется.

$hostname = '{imap.YOUR_DOMAIN.com:143/imap/notls}INBOX'; 
$username = 'YOUR_USERNAME';
$password = 'YOUR_PASSWORD';

$inbox = imap_open($hostname, $username, $password) or die('Cannot connect to Gmail: ' . imap_last_error());

Если он не выдаст ошибку, это означает, что вы успешно подключены к серверу. Надеюсь, это поможет.

Ответ 6

Вы должны включить данную опцию из учетной записи Gmail и подключиться к серверу Gmail с другого устройства или из Интернета. https://myaccount.google.com/lesssecureapps