Intereting Posts
Как проверить, является ли строка допустимым PCRE? Yii: выполнять действия с использованием разной компоновки, чем макет контроллера Динамические страницы PHP с пользовательской ссылкой Какие проверки следует использовать для предотвращения прямого доступа к страницам (с использованием PHP)? как показать несколько новостей в marquee от mysql, используя php Как сделать разбиение на страницы из нескольких массивов и вычислить общее количество? WordPress: показывать только будущие сообщения минус один день PHP – Возвращает массив родителей из многомерного ассоциативного массива для паттерна Войдите в Gmail Inbox с помощью Curl? Интеграция PayPal, как я могу определить учетную запись получателя? Как отправить данные на удаленный сервер с помощью Javascript Laravel 4 – Composer Install терпит неудачу каждый раз, хотя я использую PHP 5.4 Элегантный способ получить количество месяцев между двумя датами? PHP – вызов Ajax не будет запускать API без wait / print_r Присоединить изображение к событию Facebook (php sdk, rest или graph api)

Как обеспечить соединение imap_open

Я использую imap_open (), чтобы установить соединение с моим почтовым сервером для проверки возвращенных писем.

$pop3conn = imap_open('{localhost:110/pop3}', MAILLOGIN, MAILPWD); if($pop3conn == false) echo'<br />no conn'; else { // check mail headers and bodies } 

Я получаю сообщение PHP о небезопасной аутентификации:

Примечание: Неизвестно: ПРОБЛЕМА БЕЗОПАСНОСТИ: небезопасный сервер рекламируется AUTH = PLAIN (errflg = 1) в Unknown в строке 0

Я искал на php.net и работал в Интернете в течение нескольких часов, но не могу найти решение, как избавиться от этого.

единственное, что я нашел, тоже не работает: добавление / защита для имени сервера.

 $pop3conn = imap_open('{localhost:110/pop3/secure}', MAILLOGIN, MAILPWD); 

то я получаю:

Примечание: Неизвестно: не удается выполнить безопасную проверку подлинности на этом сервере (errflg = 2) в Unknown в строке 0

Заранее благодарю за любую помощь!

Я немного удивлен, что это дает вам сообщение in Unknown on line 0 как это обычно происходит, когда возникает ошибка, прежде чем скрипт начнет выполнение. Однако единственным реальным решением этой проблемы является скрыть ошибки PHP.

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

Вы можете обнаружить, что даже вызов ini_set('display_errors', 0) или использование злого оператора @ не будет исправлять это, поскольку он находится in Unknown on line 0 хотя вы все равно не должны показывать ошибки PHP в рабочей среде. Вы должны убедиться, что ваш php.ini в производстве настроен на скрытие ошибок пользователя.

На самом деле это не фальшивое сообщение, а просто означает, что это незашифрованное соединение с открытым текстом. Вот как вы можете это сделать:

 $error = imap_errors(); if (count($error) > 1 || $error[0] != 'SECURITY PROBLEM: insecure server advertised AUTH=PLAIN') { // More than 1 error or not the expected error var_dump($error); throw new Exception('IMAP error detected'); } 

Вопрос несколько лет, но я столкнулся с той же проблемой:

 imap_open("{imap.domain.com:143}INBOX", 'username', 'password'); 

gaves me error SECURITY PROBLEM: insecure server advertised AUTH=PLAIN .

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

Стандартные порты:

 Protocol Unsecured Secured POP3 110 995 (SSL, TLS) IMAP4 143 993 (SSL, TLS) SMTP 25 465 (SSL), 587 (TLS, STARTTLS) 

И согласно документации PHP-функции imap_open () я изменил следующие параметры:

 imap_open("{imap.domain.com:993/imap/ssl}INBOX", 'username', 'password'); 

Итак, теперь у меня есть связь зашифрована / защищена, и PHP больше не сообщает об ошибках.