Логин или email:
Пароль:
Зайти через вконтакте
Зайти через тест аккаунт
Навигация:
Панель управления оформлением проекта
Все статьи по теме: Php / Модули к сайтам

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

Как подключится к майлу?Статья о соединения с почтой, и чтоб код с определенного раздела сам брал бы вложенные файлы, работа с почтой mail.ru через PHP

Всем привет. Когда то давно я делал функцию, точнее скрипт, который бы по крону (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"; };

?>

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

Средняя оценка статьи: 5 балл
Назад
2 из 7
Вперед
337
Статья подготовлена пользователем:
Рейтинг: 0.00
Все статьи по теме: Php / Модули к сайтам