Отримуйте електронні адреси із отриманих повідомлень Gmail


33

Як я можу експортувати список, що містить електронні адреси для всіх, хто надіслав мені електронну пошту? У мене всі повідомлення архівовано.


deep-email-extractor.com - ваш друг. Оплачується за безпечний, безпечний і використовує паролі двох кроків. Я купив його кілька років тому і до цих пір використовую, досить зручно
Тіно Макларен

Я ще не можу опублікувати відповідь (недостатньо реп.), Але відповідь цього Джеррі Ноймана тут, у Python, чудово працює!
Basj

Відповіді:


13

Я дуже здивований усіма складними відповідями, що передбачають додаткові інструменти! Кожен електронний лист, який ви отримуєте, має адресу, додану до "Усі контакти" (на відміну від "Мої контакти") у частині "Контакти" Gmail. Експортуйте це, і ви закінчили (або я щось пропустив у вашому запитанні).


Це було б чудово, якщо припустити, що людина все ще має доступ до облікового запису Gmail, а не простого архіву повідомлень. Гарне рішення!
Бред

Так, погоджено, але є одне застереження щодо використання контактів над інструментами вилучення, ви, можливо, поспішали зі своїми контактами, багато хто з нас це робить, коли ми «прибираємо», як пропонує ОП, коли його повідомлення архівуються. На даний момент ви тепер не впевнені, чи є у вас "усі" адреси електронної пошти? Я опинився в цій ситуації, і переглянувши всі відповіді тут, starbanana був просто найелегантнішим і надійнішим (він використовує двоступінчасті автентифікації та конкретні паролі програми) та прямий зв'язок з мого ПК на gmail, щоб ніхто не прослуховував .
Тіно Макларен

2
Це справедливо лише в тому випадку, якщо ви ввімкнули це налаштування. Хоча це за замовчуванням, ви можете легко вимкнути його. Див.: Зупиніть Gmail автоматично створювати контакти
але

28

Тут починається потужність сценарію Google Apps. Якщо вставити наступний скрипт у нову електронну таблицю Google (Інструменти, редактор сценаріїв, натисніть значок помилки, щоб підтвердити автентифікацію сценарію), то нові аркуші будуть автоматично створені на основі кількості присутніх етикеток. Після цього будуть додані адреси електронної пошти.

function getEmails() {
  // set spreadsheet and retrieve labels
  var ss = SpreadsheetApp.getActiveSpreadsheet();  
  var labels = GmailApp.getUserLabels(), emptyLabels = [];

  // itterate through the labels
  for (var i=0; i<labels.length; i++) {

    try {
      // create sheets and clear content
      var sh = ss.getSheetByName(labels[i].getName()) || 
      ss.insertSheet(labels[i].getName(), ss.getSheets().length);
      sh.clear();

      // get all messages
      var eMails = GmailApp.getMessagesForThreads(
        GmailApp.search("label:" + labels[i].getName()))
          .reduce(function(a, b) {return a.concat(b);})
          .map(function(eMails) {
        return eMails.getFrom() 
      });

      // sort and filter for unique entries  
      var aEmails = eMails.sort().filter(function(el,j,a)
        {if(j==a.indexOf(el))return 1;return 0});  

      // create 2D-array
      var aUnique = new Array();  
      for(var k in aEmails) {
        aUnique.push([aEmails[k]]);
      }

      // add data to corresponding sheet
      sh.getRange(1, 1, aUnique.length, 1).setValues(aUnique);
    } catch (e) {
      emptyLabels.push(labels[i].getName());
    }
   }
   ss.toast("These sheets are empty: " + emptyLabels);
}

Використовуйте SPLITфункцію для вилучення імен, щоб знайти дублікати. Системні папки ігноруються, як-от INBOXабо All Items.

Примітка: виконання сценарію може зайняти деякий час, що, звичайно, залежить від кількості електронних листів


@ MG1 перевірив сценарій, і він не працює на порожніх мітках. Переглянуто код, щоб з’явилося повідомлення, в якому згадуються порожні мітки.
Яків Ян Туінстра

7

Оновлення 2017 року

Starbanana змінив своє ім'я на глибокий екстрактор електронної пошти, і це також виглядає як оновлений інтерфейс програми та змусив його працювати на декількох облікових записах (виявив, що тільки що увійшов у свій додаток), змінивши посилання нижче, щоб відобразити це.

Оригінальний відповідь

Якщо вам потрібна швидка програма для настільних ПК (а не сценарій), то врахуйте це.

Я дуже багато шукав додаток, який працює на рівні етикетки, і знайшов експортера електронної пошти Gmail від екстрактора глибокої пошти .

Це платний додаток (я не маю нічого спільного з ними), але це дешево, і ви можете експортувати електронні адреси з певних міток або з усіх ваших облікових записів Gmail.

Тож у вашому випадку весь електронний лист, отриманий на етикетці, використовуйте фільтр та використовуйте вище, щоб експортувати у файл CSV.


1
Більш дешевою альтернативою для користувачів Mac є Екстрактор контактів електронної пошти ( itunes.apple.com/us/app/email-contacts-extractor/… ). Повне розкриття інформації: я розробив це сам, бо вважав, що інші пропозиції були надто дорогими або вимагали доступу в Інтернет до моєї електронної пошти.
hpique

Було б дивовижно, якби ви могли зробити версію на 20 адрес або менше, як вони.
Дан Розенстарк

starbanana.com тепер також витягує електронні листи з тіла, я просто спробував це, і багатопотокова передача (також 15 міток одночасно) надзвичайно швидко добре справляє враження.
Тіно Макларен

6

Виходячи з відповіді @ jacob-jan-tuinstra Зробив незначні зміни, що відповідають моїм потребам, можливо, інші вважають це корисним.

Використовує пошук, не розбивається на етикетки, а також робить розміщення для великих вхідних повідомлень.

Частину, де написано "ВАШЕ ПОШУК ПОШУКУ НА GMAIL ТУТ", можна заповнити будь-яким запитом, який ви б використали у своєму папці "Вхідні".

function getEmails() {
  // set spreadsheet and retrieve labels
  var query = 'YOUR GMAIL SEARCH QUERY GOES HERE',
    ss = SpreadsheetApp.getActiveSpreadsheet(),
    sh = ss.getSheetByName(query) || ss.insertSheet(query, ss.getSheets().length),
    uniqueEmails = {},
    errors = [],
    // max chunk size
    chunkSize = 500,
    currentChunk = 0,
    threads,
    messages,
    i,
    j,
    k,
    msg,
    tos;
  sh.clear();
  while (currentChunk === 0 || threads.length === chunkSize) {
    try {
      // grab threads that match the query one chunk at a time
      threads = GmailApp.search(query, chunkSize * currentChunk, chunkSize);
      // grab corresponding messages from the threads
      messages = GmailApp.getMessagesForThreads(threads);
      for (i = 0; i < messages.length; i++) {
        msg = messages[i];
        for (j = 0; j < msg.length; j++) {
          // get the from
          uniqueEmails[msg[j].getFrom()] = true;
          // get the reply to
          uniqueEmails[msg[j].getReplyTo()] = true;
          // grab from the to field as well
          // this has a bug for people with commas in their names
          // tos = msg[j].getTo().split(',');
          // for (k = 0; k < tos.length; k++) {
          //  uniqueEmails[tos[k]] = true;
          // }
        }
      }
      currentChunk += 1;
    } catch (e) {
      errors.push(e);
    }
  }
  // create 2D-array
  var aUnique = [];
  for (k in uniqueEmails) {
    aUnique.push([k]);
  }

  // add data to corresponding sheet
  sh.getRange(1, 1, aUnique.length, 1).setValues(aUnique);
}

ваш знімок прекрасно працює для мене, дякую! чи можете ви додати можливість отримання електронних адрес з тіла електронної пошти також високо оцінено. Спасибі.

5

Наступний додаток є безкоштовним і працює прекрасно!

http://www.labnol.org/internet/extract-gmail-addresses/28037/


Ще одна чудова утиліта. Але я ще спробую це.
Moiz Tankiwala

1
Я б ніколи не довіряв жодному «он-лайн додатку», тому багато аферистів, які там ставлять un / pw та всі ваші електронні адреси. Перейдіть за допомогою встановленого додатка - з'єднання HTTPS.
Тіно Макларен

Я згоден, вам потрібно бути обережними, але хлопець за Лабнолом - хороший хлопець, який опублікував багато справді корисних речей. Якщо ви не довіряєте цьому, але це трохи технічна інформація, ви завжди можете перейти до програми src, на яку він посилається, із цієї статті, і перекладіть свій власний: ctrlq.org/code/…
RedYeti

5

Плутати / нетехнічно / немає ідеї, що робити?

Спробуйте наступний крок за кроком, і завдяки https://webapps.stackexchange.com/a/47930/6329

крок 1. drive.google.com

крок 2. нова електронна таблиця

крок 3. інструменти> редактор сценаріїв

крок 4. Закрийте спливаюче введення кнопкою закриття

крок 5. вставте код

function getEmails() { 
  // http://stackoverflow.com/a/12029701/1536038  
  // get all messages      
  var eMails = GmailApp.getMessagesForThreads(
    GmailApp.search('after:2012/1/14 before:2013/8/15'))
      .reduce(function(a, b) {return a.concat(b);})
      .map(function(eMails) {
    return eMails.getFrom() 
  });

  // sort and filter for unique entries  
  var aEmails = eMails.sort().filter(function(el,j,a)
    {if(j==a.indexOf(el))return 1;return 0});  

  // create 2D-array
  var aUnique = new Array();  
  for(var k in aEmails) {
    aUnique.push([aEmails[k]]);
  }

  // add data to sheet
  SpreadsheetApp.getActiveSheet().getRange(1, 1, aUnique.length, 1)
    .setValues(aUnique);
} 

крок 6. розташуйте курсор у слові "getEmails" у першому рядку

крок 7. натисніть кнопку відтворення трикутника вище в рядку меню

крок 8. Просить вас пройти автентифікацію, зробіть це

крок 9. ще раз натисніть кнопку відтворення, якщо вона ще не запущена

крок 10. перевірте свою оригінальну електронну таблицю, і в ній з’являться електронні листи.


4
  1. Перейдіть до списку. Установіть прапорець у спадному варіанті та виберіть усі.
  2. [Зверху ви отримаєте варіант гіперпосилання, щоб вибрати всі бесіди у вашому списку. Клацніть його.] Оновлення: цей крок не працює, він дозволить вам робити лише 25, одночасно!
  3. Потім перейдіть у спадне меню "Більше" та виберіть такі фільтрувальні повідомлення.
  4. У діалоговому вікні фільтру буде виділено текстове поле Від. Це все з адрес.
  5. Скопіюйте.
  6. Вставте його в редактор HTML на зразок Notepad ++ або Visual Studio.
  7. Тепер вам просто потрібно здійснити пошук і замінити слово АБО, замінити на ;або ,.
  8. Відновіть список і вставте у своє повідомлення.

Краще просто дати відповідь. Немає потреби в цій історії. :-)
Yosi Mor

4

Єдиний спосіб це зробити

  1. Експортуйте всі у форматі .txt (див. Експорт повідомлень Gmail у текстові чи HTML-файли )
  2. Проведіть все це та пров’яжіть рядки "From:" в окремій базі даних.

Примітка: якщо ви використовуєте impsize (безкоштовно) для кроку 1, тоді збережіть резервні копії як "% ВІД - Відправник електронної пошти", і ви побачите їх у своєму каталозі.


Я цього боявся. Дякую, хоча!
Бред

1

Я придумав спосіб зробити це для користувачів Mac, використовуючи Mac Mail та адресну книгу, не потребуючи завантаження додаткового програмного забезпечення. Це працює з Mac Mail 4.6 та адресною книгою 5.0.3. Не впевнений, чи працює він для інших версій чи ні. Це може працювати аналогічно для інших програм IMAP Email, таких як Thunderbird, але я не можу поручитися за це.

Ось такі кроки:

  1. Налаштуйте свій обліковий запис Gmail у Mac Mail. Переконайтесь, що сервер вхідної пошти "imap.gmail.com" Ви можете знайти це на панелі інструментів> Пошта> Налаштування> Облікові записи.
  2. У Gmail створіть мітку для електронних листів, для яких потрібно витягнути електронні адреси.
  3. В Gmail позначте всі потрібні електронні листи відповідно до мітки вище.
  4. У Gmail перейдіть у Налаштування> Мітки та встановіть прапорець для створеної вами нової мітки із написом "Показати в IMAP".
  5. Перезавантажте Mac Mail, щоб нові мітки Gmail синхронізувалися.
  6. Відкрита адресна книга. Якщо ви використовуєте адресну книгу для своїх контактів, вам потрібно буде створити резервну копію контактів, оскільки вам потрібно видалити всі контакти в адресній книзі. Я вважаю, що ви можете зробити це за допомогою Файл> Експорт> Архів адресних книг. Я не використовую адресну книгу, крім експорту електронної пошти Gmail, тому не можу дати гарну пораду щодо цього. Видаліть контакти з адресної книги на свій страх і ризик.
  7. Видаліть усі контакти в адресній книзі. Ви можете зробити це, вибравши один контакт, натиснувши Command + a та натиснувши клавішу видалення.
  8. У Mac Mail знайдіть папку IMAP. У лівій частині вікна має бути стовпець із усіма вашими поштовими скриньками. Якщо ви не переходите до верхньої панелі інструментів, виберіть Перегляд> Показати поштові скриньки або натисніть Command + Shift + M. Папка IMAP знаходитиметься внизу стовпця внизу "Нагадування", "RSS", "На моєму Mac" і т. Д. Ви повинні побачити Ім'я свого облікового запису Gmail, який ви створили раніше, зі стрілкою, що спадає ліворуч.
  9. У Mac Mail клацніть стрілку спадного меню поруч із поштовою скринькою. Це покаже вам список папок і має містити мітку, яку ви створили в Gmail як папку. Виберіть цю папку, натиснувши її.
  10. У Mac Mail у вікні Повідомлення, де тепер мають відображатися всі ваші електронні листи для мітки Gmail), виберіть усі листи зі списку. Перейдіть на верхню панель інструментів, виберіть Повідомлення> Додати відправників до адресної книги або натисніть Shift+ Command+Y . Усі відправники для вашої мітки Gmail тепер повинні знаходитись в адресній книзі.
  11. Тепер в адресній книзі ви можете експортувати контакти як візитні картки, щоб використовувати їх у будь-якій програмі, перейшовши на панель інструментів і вибравши Файл> Експорт> Експорт візитних карток. Ви навіть можете імпортувати назад у контакти Google. Якщо вам потрібен файл CSV, вам, на жаль, потрібно буде імпортувати vCards до іншої програми (Google Контакти працює) та повторно експортувати, оскільки ви не можете експортувати CSV з Mac Mail.

Сподіваюся, це допомагає! Це трохи громіздко, але працює для мене і досить легко після того, як ви це зробите пару разів.


0

MineMyMail отримує всі ваші повідомлення через IMAP, а потім витягує з нього адреси електронної пошти.

Ви можете вибрати, які папки шукає, вибравши папку / ярлик "Надіслана пошта".


Чи надійний MineMyMail? Я зайшов на їхній сайт, і Chrome попередив, що термін дії сертифікату минув. Не маючи належного сертифіката HTTPS та просити користувачів ввести своє ім’я користувача та пароль Gmail, безумовно, страшно. Це змушує мене підозрювати, що сайт може витягувати електронні листи та використовувати його для власного спаму чи продажу іншим спамерам.
Moiz Tankiwala

0

Експортер адрес IMAP - це програма Mac, яка підключається до будь-якого облікового запису електронної пошти IMAP та витягує кожну адресу відправника, також із папок / міток, які ви встановили раніше. Чесно кажучи, я повинен підкреслити, що це розроблено моєю компанією.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.