Работа с почтой в PHP через IMAP
Подключение к IMAP
Чтобы подключиться к почтовому ящику по IMAP сначала надо на почтовом сервере разрешить такое подключение и создать пароль для приложения, которое будет подключаться по IMAP. После этого подключаемся так:
Скопировано
$imap = imap_open( '{imap.mail.ru:993/imap/ssl}INBOX', 'xxx@mail.ru', 'пароль' );
Показать код
Читаем сегодняшние письма
Скопировано
$date_from = date( 'j F Y' );
$mails = imap_search( $imap, 'SINCE "' . $date_from . '"' );
if( $mails ) {
foreach( $mails as $mail_num ) {
$header = imap_header( $imap, $mail_num );
$subject = mb_decode_mimeheader( $header->subject );
$from = mb_decode_mimeheader( $header->fromaddress );
// делаем что-то еще ...
}
}
Показать код
Сохраняем вложение из письма
Скопировано
// читаем непрочитанные сообщения
$mails = imap_search( $imap, 'UNSEEN' );
if( $mails ) {
foreach( $mails as $mail_num ) {
$structure = imap_fetchstructure( $imap, $mail_num );
foreach( $structure->parts as $key => $part ) {
if( isset( $part->disposition ) && $part->disposition == 'attachment' ) {
$attachment_name = mb_decode_mimeheader( $part->parameters[0]->value );
$attachment = base64_decode( imap_fetchbody( $imap, $mail_num, $key + 1 ) );
file_put_contents( __DIR__ . "/files/$attachment_name", $attachment );
}
}
}
}
Показать код