- Найти все адреса email в файле
- imap_list
- Return Values
- Changelog
- Examples
- See Also
- Чтение почты через IMAP в PHP
- Получение писем
- Установка флагов
- Удаление писем
- How to extract email addresses from a string in PHP?
- Basic rules for a valid email address
- How to fetch email addresses from a given string in PHP
- Fetched uniqe $count_Arr email address are:
Найти все адреса email в файле
Здравствуйте, банальный вопрос у меня, нужно Html файл парсить и понаходить все эмейлы, да да да с помощью ргулярок это в общем то не проблема сделать и я уже сделал, о вот проблема возникла в том что-бы тоже самое сделать с помощью строковых функций и вот тут что-то докумекать совсем немогу, может кто аправлеие подскажет, что да как использовать, заранее спасибо.
Найти на страницах все email адреса
Здравствуйте. Для парсинга страниц я использую htmlagilitypack Как мне найти на страницах все.
Записать все встречающиеся несколько раз IP адреса в txt файле
Есть код на C, который записывает все, встречающиеся несколько раз, IP адреса в txt файле.
Копирование заданного файла на все компьютеры в сети, IP-адреса которых находятся в списке в текстовом файле
Доброго времени суток. Требовалось создать *.bat файл, который осуществит копирование файла по всем.
$str = 'some text dajte@piva.net some text forget@my.name some text'; $words = str_word_count($str,1,'@.'); foreach($words as $val){ if(strpos($val,'@') && strpos($val,'.')){ echo $val."\n"; } }
dajte@piva.net forget@my.name
Спасибо, все классно, и работает отличо, только вот еще вопрос а если в эмейле цифры встречаются, вот тут то оно не хочет
Сообщение от Speli
$str = 'some text dajte123@piva.net some text forget@my.name some text 456@piva.net'; $words = explode(' ',$str); foreach($words as $val){ if(strpos($val,'@') && strpos($val,'.')){ echo $val."\n"; } }
Еще раз спасибо, все сделал, немного по другому но главное работает)
Добавлено через 1 час 38 минут
Я конечно, сильно извиняюсь, но можно еще вопросик) А вот как извлечь первое слово идущее после тега
?
в html же текст сплошняком идет вместе с тегами и по пробелам никак не распарсишь
Сообщение от Speli
$words = explode(' ', implode(' ', explode('
',$str)));
Но задания вам дают какие-то странные. Дальше может оказаться, что тег
не единственный в html )) И что тогда?
Да вот сам удивляюсь))Это тоже надо сделать и регулярками и без них. В этой ситуации наоборот сложость с регулярками появилась, все никак работать не хотело, но это скорей всего из за моей тупости))) Спасибо, как раз так и сделал. Спасибо за помощь)
Заменить все email в этом тексте на ‘[email]’
Дан текст. Заменить все email в этом тексте на ». Например, ‘пишите мне на.
Отправка email на адреса из БД
НАРОД проблема, как отпровлять письма я знаю, а вот как сделать так чтобы емайлы брались из базы, и.
Проверка email адреса
Задание: Написать программу, которая будет проверять email адрес на валидность. Под правильным.
Валидация адреса email
Подскажите как сделать Проверку соответствия EMail в TextBox Чтобы был правельный формат .
imap_list
reference should normally be just the server specification as described in imap_open() .
Passing untrusted data to this parameter is insecure, unless imap.enable_insecure_rsh is disabled.
Specifies where in the mailbox hierarchy to start searching.
There are two special characters you can pass as part of the pattern : ‘ * ‘ and ‘ % ‘. ‘ * ‘ means to return all mailboxes. If you pass pattern as ‘ * ‘, you will get a list of the entire mailbox hierarchy. ‘ % ‘ means to return the current level only. ‘ % ‘ as the pattern parameter will return only the top level mailboxes; ‘ ~/mail/% ‘ on UW_IMAPD will return every mailbox in the ~/mail directory, but none in subfolders of that directory.
Return Values
Returns an array containing the names of the mailboxes or false in case of failure.
Changelog
Version | Description |
---|---|
8.1.0 | The imap parameter expects an IMAP\Connection instance now; previously, a valid imap resource was expected. |
Examples
Example #1 imap_list() example
$mbox = imap_open ( «» , «username» , «password» , OP_HALFOPEN )
or die( «can’t connect: » . imap_last_error ());
?php
$list = imap_list ( $mbox , «» , «*» );
if ( is_array ( $list )) foreach ( $list as $val ) echo imap_utf7_decode ( $val ) . «\n» ;
>
> else echo «imap_list failed: » . imap_last_error () . «\n» ;
>
See Also
- imap_getmailboxes() — Read the list of mailboxes, returning detailed information on each one
- imap_lsub() — List all the subscribed mailboxes
Чтение почты через IMAP в PHP
В PHP без проблем можно работать с почтой через IMAP, для этого есть все необходимые функции, подробнее на php.net.
Получение писем
$imap = imap_open(«адрес», «e-mail», «пароль») – создает подключение к почтовому ящику. Далее, функция imap_search($imap, ‘ALL’) получает массив c индикаторами писем.
ALL | Все сообщения |
UNSEEN | Непрочитанные сообщения |
SEEN | Прочтенные сообщения (установлен флаг seen) |
NEW | Новые сообщения (впервые появилось в ящике в ходе текущей сессии) |
OLD | Старые сообщения |
ANSWERED | Сообщения с флагом answered (отвеченный) |
UNANSWERED | Неотвеченные сообщения |
DELETED | Удаленные сообщения |
UNDELETED | Не удаленные сообщения |
FLAGGED | Сообщения с установленным флагом flagged (важное) |
RECENT | Сообщения с флагом recent (недавнее сообщение) |
UNFLAGGED | Сообщения без установленных флагов |
ON «date» | Сообщения с датой, равной « date » |
BEFORE «date» | Сообщения с датой, до « date » |
SINCE «date» | Сообщения с датой, после « date » |
FROM «string» | Сообщения в поле From: которых присутствует «string » |
TO «string» | Сообщения в поле To: которых присутствует «string » |
SUBJECT «string» | Сообщения, у которых присутствует «string » в поле Subject |
BODY «string» | Сообщения содержащие «string » в теле |
TEXT «string» | Сообщения с текстом «string » |
KEYWORD «string» | Сообщения с ключевым словом «string» |
UNKEYWORD «string» | Сообщения, не имеющие ключевого слова «string » |
Далее массив обрабатывается в цикле, в примере происходит обход по всем письмам.
$imap = imap_open("INBOX", "mail@test.ru", "Пароль"); $mails_id = imap_search($imap, 'ALL'); foreach ($mails_id as $num) < // Заголовок письма $header = imap_header($imap, $num); var_dump($header); // Тело письма $body = imap_body($imap, $num); var_dump($body); >imap_close($imap);
$header = imap_header($imap, $num) – получает заголовки письма в виде объекта. Для удобства можно преобразовать в массив:
$header = imap_header($imap, $num); $header = json_decode(json_encode($header), true); print_r($header);
Array( [date] => Mon, 16 Sep 2019 16:03:56 +0300 [Date] => Mon, 16 Sep 2019 16:03:56 +0300 [subject] => =?UTF-8?B?SGVsbyBXb3JsZA==?= [Subject] => =?UTF-8?B?SGVsbyBXb3JsZA==?= [message_id] => [toaddress] => mail@snipp.ru [to] => Array( [0] => Array( [mailbox] => mail [host] => snipp.ru ) ) [fromaddress] => =?UTF-8?B?MTIzNDU2QHNpdGUucnU=?= [from] => Array( [0] => Array( [personal] => =?UTF-8?B?MTIzNDU2QHNpdGUucnU=?= [mailbox] => 123456 [host] => site.ru ) ) [ccaddress] => [cc] => [reply_toaddress] => [reply_to] => [senderaddress] => [sender] => [Recent] => [Unseen] => [Flagged] => [Answered] => [Deleted] => [Draft] => [Msgno] => 1 [MailDate] => 16-Sep-2019 16:03:59 +0300 [Size] => 38895 [udate] => 1568639039 )
Как видно в примере, тема письма и другие данные закодированы в base64 ( ?UTF-8?B?SGVsbyBXb3JsZA==?= ), декодировать их можно с помощью функции mb_decode_mimeheader() .
$header = imap_header($imap, $num); $header = json_decode(json_encode($header), true); echo mb_decode_mimeheader($header['subject']);
$body = imap_body($imap, $num) – тело письма, обычный текст.
Может быть закодировано в quoted-printable (= D0=94=D0=BE=D0=B1=D1=80=D1=8B=D0=B9 ), раскодировать можно функцией quoted_printable_decode() .
$body = imap_body($imap, $num); $body = quoted_printable_decode($body); echo $body;
Установка флагов
imap_setflag_full ($imap, $num, $flag) – установит письму флаг, возможны значения:
seen | Сообщение прочитано |
answered | На сообщение отправлен ответ |
flagged | Сообщение отмечено как «важное» |
deleted | Сообщение отмечено как удалённое |
draft | Сообщение отмечено как черновик |
recent | Недавнее сообщение |
Можно установить сразу несколько флагов, разделяя их пробелами.
В примере, письмам, у которых в теме письма есть слово «заявка» устанавливается флаг «важное».
$imap = imap_open("INBOX", "mail@test.ru", "Пароль"); $mails_id = imap_search($imap, 'ALL'); foreach ($mails_id as $num) < // Заголовок письма $header = imap_header($imap, $num); $header = json_decode(json_encode($header), true); $subject = mb_decode_mimeheader($header['subject']); if (mb_strpos($subject, 'заявка') !== false) < imap_setflag_full($imap, $num, '\\flagged'); >> imap_close($imap);
Удаление писем
В цикле, письмо помечается функцией imap_delete() , после этого вызывается функция imap_expunge() , которая выполняет удаление всех помеченных писем.
$imap = imap_open("INBOX", "mail@site.ru", "Пароль"); $mails_id = imap_search($imap, 'ALL'); foreach ($mails_id as $num) < $header = imap_header($imap, $num); $body = imap_body($imap, $num); // Помечаем письмо как удаленное imap_delete($imap, $num); >// Удаление помеченных писем imap_expunge($imap); imap_close($imap);
How to extract email addresses from a string in PHP?
In this article, we will discuss how to extract an email address from a given string in PHP. First of all, we have to understand what is a valid email address.
Basic rules for a valid email address
The following rules are for a valid email,
- Email addresses use only alphanumeric characters like- A-Z, a-z, 0-9, etc.
- Special characters like- ^ $ ! < >[ ] ,etc. are not allowed.
- Must have @ symbol.
- Except for the first character, hyphens ( – ), underscores ( _ ), periods ( . ) can be used within the address.
How to fetch email addresses from a given string in PHP
In PHP, email addresses can only be verified using methods like-preg_match(), preg_match_all() etc.
Let us write the script for retrieving email addresses,
[email protected] My second e-mail address is [email protected] Obviously, this is not an email address: code__speedy@^gmail.co.in '; //test string for checking email $test_patt ="/(?:[a-z0-9!#$%&'*+=?^_`<|>~-]+(?:\.[a-z0-9!#$%&'*+=?^_`<|>~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:252|246|[01]?62?)\.)(?:254|238|[01]?21?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/"; //comapare using preg_match_all() method preg_match_all($test_patt, $tstr, $valid); //display list of emails foreach($valid[0] as $mail) < echo $mail."
"; > ?>
Let us shorten the pattern string and rewrite the script using the function,
)+/i'; preg_match_all($str, $text, $out); //return a blank array if not true otherwise insert the email in $out and return return isset($out[0]) ? $out[0] : array(); > //string to be checked $tstr = ' My first e-mail address is [email protected] My second e-mail address is [email protected] Obviously this is not a emaail address: code__speedy@^gmail.co.in '; //display email addresses echo""; print_r(fetch_mails($tstr)); ?>Let us rewrite the script without using the function that returns only unique email addresses,
Fetch email address from a string in PHP with this below program.
[email protected] My second e-mail address is [email protected] Obviously, this is not an email address: code__speedy@^gmail.co.in My last e-mail address is again [email protected] '; //generate an empty array. $match = array(); //String that recognize a e-mail $test_pat = '/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]/'; //check testpattern in given string preg_match_all($test_pat, $tstr, $match); echo""; //seleccting only the unique ones var_dump(array_values(array_unique($match[0]))); echo""; //store above in array for upcoming bit. $newArr = array_values(array_unique($match[0])); //count no. of emails $count_Arr = count($newArr); //converting to one string $mail_str = implode("
", $newArr); //display the values echo "Fetched uniqe $count_Arr email address are:
$mail_str"; ?>
array(2) < [0]=>string(20) "[email protected]" [1]=> string(25) "[email protected]" > Fetched unique 2 email address are: [email protected] [email protected]This is how we can retrieve email addresses from a given string in PHP. If you have any doubt, put a comment.