Когда сталкиваешься с какой то новой задачей зачастую сталкиваешься с кучей проблем. Решение их обычно находится поиском. На поиски нужной инфы бывает уходит куча времени. Поэтому я буду для себя делать в ЖЖ некоторые заметки, чтобы в случае повторного возникновения проблемы не тратить на поиски кучу времени.
Для работы с Gmail необходимо подключится:
$pop_conn = fsockopen("ssl://pop.gmail.com", 995, $errno, $errstr, 10);
if(!$errstr) {
$data=fgets($pop_conn,1024);
echo "$data
";}
Для отправки требуется, чтобы в PHP.ini было подключено php_openssl.dll расширение.
Я подключил, перезапустил Denwer и при обращении к php скрипту, который пытается отправить почту через удаленный smtp сервер, выдается ошибка "Порядковый номер 3879 не найден в библиотеке DLL LIBEAY32.dll" (Видимо битый dll).
Решение не пришлось долго искать, я посмотрел что в директории php находится файл libeay32.dll и поменял апачевский libeay32.dll согласившись на замену.
/usr/local/php5/libeay32.dll => /usr/local/apache/bin/libeay32.dll.
Код для авторизации:
$user = 'accaunt@gmail.com';
$password = 'password';
$pop_conn = fsockopen("ssl://pop.gmail.com", 995,$errno, $errstr, 10);
if(!$errstr) {
$data=fgets($pop_conn,1024);
echo "$data
";
fputs($pop_conn,"USER $user\r\n");
$data= fgets($pop_conn,1024);
echo "$data
";
#
fputs($pop_conn,"PASS $password\r\n");
$data= fgets($pop_conn,1024);
if(stristr($data,"ok")) {
echo "$data
";
#
//колво писем
fputs($pop_conn,"STAT\r\n");
$data=fgets($pop_conn,1024);
$data=eregi("^\+OK *([0-9]+)",$data,$cnt);
echo "Писем=$cnt[1]
";
if($cnt[1]>0) {
}
}
}