Работа с почтой mail.ru через PHP

Веб-программирование 8 июля 2012 г., 7:36

Всем привет, давно не писал, чего то совсем времени не хватает, но пора уже обновить -).

Когда то давно я делал функцию, точнее скрипт, который бы по крону (cron) соединялся с почтой, и с определенного раздела сам брал бы вложенные файлы. И вот сейчас на один проект, понадобилась такая же система, есть некая почта на mail.ru, на которую поставщик присылает свежие прайс-листы в xls или xlsx.

Найдя свой старый скрипт, я попробовал соединиться с mail.ru, но ничего не получилось:


Can't connect: Can't open mailbox {pop.mail.ru:110/pop3}INBOX: invalid remote specification

 

Так как прошло около года, я понял что у mail.ru сменились спецификации соединения. Стал искать в интернете, как нужно правильно указать, но везде устаревшие данные, так же как у меня в скрипте, используется pop3 и imap. Решив что pop3 уже не используется, я поменял строку запроса на imap и порт по умолчанию 143, на что скрипт стал ругаться мне:


Can't connect: Certificate failure for imap.mail.ru: unable to get local issuer certificate: /C=US/O=thawte, Inc./OU=Certification Services Division/OU=(c) 2006 thawte, Inc. - For authorized use only/CN=thawte Primary Root CA

 

И судя по ошибке, mail стал использовать шифрование SSL для соединения по почте. Но что бы точно определить это я пошел в описание настроек протоколов:
http://help.mail.ru/mail-help/mailer/popsmtp

Хотя там и написано что поддерживается pop3 по 110 порту и imap по 143 порту, мы видим что imap работает через шифрование:

Порт —  IMAP — 143 (при использовании шифрования STARTTLS) и 993 (при использовании шифрования SSL/TLS)


Итак меняем настройки на поддержку шифрования:

<?
$host        = 'imap.mail.ru';
$port        =  993;
$login       = 'login@bk.ru';
$pass        = 'parol';
$param       = '/imap/ssl/novalidate-cert';
$folder      = 'INBOX';

if($mbox = imap_open("{"."{$host}:{$port}{$param}"."}$folder",$login,$pass)){
    echo "Connectedn";
} else { exit ("Can't connect: " . imap_last_error() ."n");  echo "FAIL!n";  };

?>

Проверяем, получилось, мы подключились к майлу.



Станьте первым!

Пожалуйста, авторизуйтесь или зарегистрируйтесь для комментирования!

Яндекс.Метрика