Php получить все email

Найти все адреса 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"; } }

Еще раз спасибо, все сделал, немного по другому но главное работает)

Читайте также:  Pdf to html xls ods

Добавлено через 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 ());

$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,

  1. Email addresses use only alphanumeric characters like- A-Z, a-z, 0-9, etc.
  2. Special characters like- ^ $ ! < >[ ] ,etc. are not allowed.
  3. Must have @ symbol.
  4. 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.

Источник

Оцените статью