скриптик для обогащения списка e-mail адресов

Тема в разделе "Как сделать...", создана пользователем danik, 1 окт 2015.

  1. danik

    danik

    Регистр.:
    26 июн 2007
    Сообщения:
    205
    Симпатии:
    53
    Нужен небольшой скриптик для обогащения списка e-mail адресов для рассылки.
    на входе которого файл с мыльникамив виде:


    Код:
    jsmith@gmail.com
    ldavinci@yahoo.com
    На выходе нужно получить в виде:

    Код:
    John Smith <jsmith@gmail.com>
    Leonardo Davinci <ldavinci@yahoo.com>
    Поскольку имен я изначально не знаю нужно их пытаться угадать, думаю что алгоритм должен быть наподобие такого

    1 пробуем угадать на основе слов до знака @ (по идее нужен здоровенный словарь имен и фамилий)
    2 пробуем пробить через онлайн сервисы наподобие http://www.emailsherlock.com/emailsearch/jsmith@gmail.com/
    3 если ничего не вышло берем все что до @ и писал с большой буквы как имя)

    p.s. словари можно набрать как вариант тут - https://github.com/fzaninotto/Faker/blob/master/src/Faker/Provider/en_US/Person.php хотя они не большие

    p.p.s. если есть уже готовое решение или вы можете помочь но не на добровольной основе) предлагайте ваши условия
     
  2. ykpon

    ykpon

    Регистр.:
    8 дек 2012
    Сообщения:
    248
    Симпатии:
    143
    Код:
    <?php
    $file = file_get_contents('список_мыл.txt');
    $firstName = array('...','...'); // имена
    $lastName = array('...','...'); // фамилии
    foreach($file as $mail):
    echo array_rand($firstName, 0)[0] . ' ' . array_rand($lastName, 0)[0] . '<' . $mail . '>';
    endforeach;
    Попробуй.
     
  3. danik

    danik

    Регистр.:
    26 июн 2007
    Сообщения:
    205
    Симпатии:
    53
    Хочу не рандом) рандом понятно что можно
    Хочу максимально приближенный к реальности
     
  4. ykpon

    ykpon

    Регистр.:
    8 дек 2012
    Сообщения:
    248
    Симпатии:
    143
    Тогда, разве что, если есть какой то список "имя@фамилия" в каком то формате либо два массива, как в примере выше, но где значения двух ключей из массива будут, как ты выразился, "приближенными к реальности".
    Но тут та же самая угадай-ка получается. Какова вероятность, что "приближенные к реальности" варианты будут похожи на реальные больше, чем рандомно склеенные? Зато в случае с рандомом есть больше вариантов генерации.
     
  5. danik

    danik

    Регистр.:
    26 июн 2007
    Сообщения:
    205
    Симпатии:
    53
    ну вот пример из жизни

    Код:
    kalycia99@gmail.com
    nicebag2015@hotmail.com
    bill.turner@btclick.com
    GrosvenorTradingGroup@hotmail.com
    davidrogers1951@hotmail.com
    Retrocampdivision@hotmail.com
    info@sumosam.com
    ysfdesign@yahoo.cn
    aandjmotors@hotmail.com
    a.burmistrovas@gmail.com
    
    и список который я обработал

    Код:
    Kalycia <kalycia99@gmail.com>
    Nicebag <nicebag2015@hotmail.com>
    Bill Turner <bill.turner@btclick.com>
    GrosvenorTradingGroup <GrosvenorTradingGroup@hotmail.com>
    David Rogers <davidrogers1951@hotmail.com>
    Retrocampdivision <Retrocampdivision@hotmail.com>
    Patrick O'Connor <info@sumosam.com> <- from domain whois
    Ysfdesign <ysfdesign@yahoo.cn>
    A&J Motors <aandjmotors@hotmail.com> <- from name before @
    Burmistrovas <a.burmistrovas@gmail.com>
    
    я так понимаю алгоритм все же такой
    если до @
    1 между словами есть знаки "." или "_" то мы делим на 2 слова и пытаемся по ним подобрать имя и фамилию
    2 если у нас есть цифры то мы их убираем
    3 нужно составить список общих слов типа info/mail/support/sales/manager/e.t.c. встречая которые мы будем пробовать вытащить инфу из whois домена потому что домены приватные
     
  6. ykpon

    ykpon

    Регистр.:
    8 дек 2012
    Сообщения:
    248
    Симпатии:
    143
    Верно. Парсишь из файла строки с мыльниками, отрезаешь все, что справа после @, включая саму собаку, а слева уже генерируешь имя.
    Чтобы не париться с делением строки левой части с точками и тире либо землей(_), просто str_replace'ом заменяешь эти знаки на пробел. Либо, все таки, explode'ом делишь их и работаешь с каждой из частей строки.
    Можно, например, буквы заменять на слова, ведь не будешь использовать имя "A Smith". Заменять "A" на "Archer", скажем так.
    Ну там от фантазии зависит.
     
  7. ykpon

    ykpon

    Регистр.:
    8 дек 2012
    Сообщения:
    248
    Симпатии:
    143
    Да лучше подставляй как сам предложил ранее. Дели левую часть на имя/фамилия. Так правильней будет по отношению к самому получателю.
     
    Последнее редактирование модератором: 2 окт 2015
  8. ALOOF

    ALOOF Создатель

    Регистр.:
    16 июн 2015
    Сообщения:
    15
    Симпатии:
    0
    Если это внешнее к Вам требование и Вы имена не собираетесь использовать в качестве подставляемого поля - то просто придумайте случайные имена и все. Имена ОБЪЕКТИВНО не нужны в рассылках.
     
  9. danik

    danik

    Регистр.:
    26 июн 2007
    Сообщения:
    205
    Симпатии:
    53
    в том то и дело что собираюсь использовать

    и если условно "вася" получит письмо где я его назову "витя" то он с большей вероятность отправит письмо в спам не читая :(
     
    Soprano нравится это.