Как получить Gmail по PHP IMAP?

Я пробую эти хосты:

{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX
{imap.gmail.com:993/imap/ssl}INBOX
{imap.gmail.com:993/ssl/novalidate-cert}Current Batch
{imap.gmail.com:993/ssl/novalidate-cert}
{imap.gmail.com:995/ssl/serivce=pop3}INBOX

Ни один из них не работал. Что такое хост Gmail или какие настройки IMAP?

Благодарю вас!


person user3744155    schedule 05.09.2014    source источник
comment
Вы проверили, что порт 993 не заблокирован брандмауэром на вашем хосте?   -  person Max    schedule 12.10.2015


Ответы (4)


imap.gmail.com:993/imap/ssl}INBOX должен быть правильным. Как вы используете это в своем php-коде? Вы просто хотите получить письмо? Потому что это будет выглядеть примерно так:

/* connect to gmail */
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = '[email protected]';
$password = 'password';

/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());
person Mikelo    schedule 05.09.2014
comment
Мой код: ‹?php $hostname = '{imap.gmail.com:993/imap/ssl}INBOX'; $username = '[email protected]'; $пароль = 'пароль'; $inbox = imap_open($hostname,$username,$password) or die('Не удается подключиться к Gmail: ' . imap_last_error()); $num_msgs = imap_num_msg($inbox); imap_close ($ входящие); эхо $num_msgs; ?› Ответ: Время ожидания соединения истекло. - person user3744155; 05.09.2014
comment
Это поможет, если вы закроете соединение после того, как вы эхо $num_msgs? - person Mikelo; 05.09.2014
comment
Не доходит до сути. Истекло время ожидания строки $inbox для выхода PHP из соединения. Не будет печатать $num_msgs. - person user3744155; 05.09.2014
comment
Если вы получаете сообщение об ошибке, например, войдите в систему через веб-браузер: попробуйте 2 проверки установки и пароль для конкретного приложения, как ответил abhishek gupta stackoverflow.com/questions/35377560/ - person Sunil Kumar; 20.10.2018
comment
Мужчина! Вы спасли бедную душу. - person peterchaula; 05.01.2021

Настройки следующие:

$mail = new Imap([
      'host'  => 'imap.gmail.com',
      'user'  => '[email protected]',
      'password' => 'password',
      'port'  => 993,
      'ssl'   => 'SSL',
]);

Затем перейдите на страницу https://myaccount.google.com/security#connectedapps и установите флажок "Разрешить меньше безопасные приложения».

person hawx    schedule 12.10.2015

Вот полный пример кода, который подключается и получает электронные письма из gmail:

/* connect to gmail */
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'gmail_email_address';
$password = 'password';
/* 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;
}
imap_close($inbox);
  • Введите правильный адрес электронной почты и пароль.
  • Возможно, вы захотите заменить

    $emails = imap_search($inbox,'ALL');

с чем-то вроде этого, чтобы сузить результаты

$emails = imap_search($inbox,'SINCE "19 October 2018"');

или вы можете получить ошибку тайм-аута.

person Sunil Kumar    schedule 20.10.2018

Есть несколько проблем с PHP IMAP и подключением к gmail.

Сначала убедитесь, что вы включили IMAP в настройках Gmail (по умолчанию отключено!).

Второй SSL IMAP на PHP имеет проблемы с несколькими версиями.

Чтобы заставить его работать, выберите: {imap.gmail.com:993/ssl/novalidate-cert}

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

Тогда это работает. Надеюсь, когда-нибудь исправят

person C. Cobben    schedule 26.01.2019