Obtenga direcciones de correo electrónico de los mensajes de Gmail recibidos

33

¿Cómo puedo exportar una lista que contiene direcciones de correo electrónico para todos los que me han enviado un correo electrónico? Tengo todos los mensajes archivados.

Puntilla
fuente
deep-email-extractor.com es tu amigo. Pagado pero seguro, utiliza contraseñas de dos pasos. Lo compré hace unos años y todavía lo uso, bastante útil
Tino Mclaren
Todavía no puedo publicar una respuesta (no hay suficiente representante), ¡pero esta respuesta de Jerry Neumann aquí en Python funciona de maravilla!
Basj

Respuestas:

13

¡Estoy bastante sorprendido por todas las respuestas complicadas que implican algunas herramientas adicionales! Cada correo electrónico que recibe tiene su dirección agregada a "Todos los contactos" (en lugar de "Mis contactos") en la parte Contactos de Gmail. Exporte ese y ya está (o me perdí algo en su pregunta).

Patrick Honorez
fuente
Eso funcionaría muy bien, suponiendo que la persona todavía tenga acceso a la cuenta de Gmail en lugar de un simple archivo de los mensajes. ¡Buena solución!
Brad
Sí, de acuerdo, pero hay una advertencia sobre el uso de contactos sobre las herramientas de extracción, es posible que haya metido la pata con sus contactos, muchos de nosotros lo hacemos cuando 'ordenamos' como sugiere el OP ya que sus mensajes están archivados. En este momento, ¿no está seguro de tener "todas" sus direcciones de correo electrónico? Estaba en esta situación y después de haber visto todas las respuestas aquí, la starbanana era simplemente la más elegante y confiable (usa autenticación de dos pasos y contraseñas específicas de la aplicación) y una conexión directa desde mi PC a gmail para que nadie en el medio escuchando .
Tino Mclaren
2
Esto solo es cierto si tiene esa configuración activada. Si bien es el valor predeterminado, puede desactivarlo fácilmente. Ver: Evitar que Gmail cree contactos automáticamente
ale
28

Aquí es donde entra en juego el poder de Google Apps Script. Si pega el siguiente script en una nueva hoja de cálculo de Google (Herramientas, editor de Script, presione el icono de error para autenticar el script), se crearán automáticamente nuevas hojas en función del número de etiquetas presentes. Después de eso, se agregarán las direcciones de correo electrónico.

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);
}

Use la SPLITfunción para extraer nombres para encontrar duplicados. Las carpetas del sistema se ignoran, como INBOXo All Items.

Nota: el script puede tardar un tiempo en ejecutarse, lo que, por supuesto, depende de la cantidad de correos electrónicos

Jacob Jan Tuinstra
fuente
@ MG1 verificó el script y falla en las etiquetas vacías. Código revisado para que aparezca un mensaje, mencionando las etiquetas vacías.
Jacob Jan Tuinstra
7

Actualización 2017

Starbanana ha cambiado su nombre a deep-email-extractor y también parece que renovó la interfaz de usuario de la aplicación y la hizo funcionar en varias cuentas (descubrí que acababa de iniciar sesión en mi aplicación), cambió el enlace a continuación para reflejar esto.

Respuesta original

Si necesita una aplicación de escritorio rápida (no un script), considere esto.

Busqué bastante una aplicación que funciona a nivel de etiqueta y encontré Gmail Email Exporter de deep-email-extractor .

Es una aplicación paga (no tengo nada que ver con ellas) pero es barata y puedes exportar direcciones de correo electrónico de etiquetas específicas o de toda tu cuenta de Gmail.

Entonces, en su caso, coloque todo su correo electrónico recibido en una etiqueta usando un filtro y use lo anterior para exportar a un archivo CSV.

LenPopLilly
fuente
1
Una alternativa más económica para los usuarios de Mac es Email Contacts Extractor ( itunes.apple.com/us/app/email-contacts-extractor/… ). Divulgación completa: lo desarrollé yo mismo porque sentí que otras ofertas eran demasiado caras o requerían acceso en línea a mi correo electrónico.
hpique
Sería increíble si pudieras hacer una versión para 20 direcciones o menos, como lo hacen.
Dan Rosenstark
starbanana.com ahora también extrae correos electrónicos del cuerpo, simplemente lo probé y el multihilo también (hace 15 etiquetas al mismo tiempo) increíblemente rápido e impresionado.
Tino Mclaren
6

Basado en la respuesta de @ jacob-jan-tuinstra. Hice algunas modificaciones menores para satisfacer mis necesidades, tal vez a otros les resulte útil.

Utiliza la búsqueda, no se divide por etiquetas y también hace fragmentos para las bandejas de entrada grandes.

La parte que dice "SU CONSULTA DE BÚSQUEDA DE GMAIL VA AQUÍ" se puede completar con cualquier consulta que utilice en su bandeja de entrada.

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);
}
varblob
fuente
tu pupitre funciona perfectamente para mí, ¡gracias! ¿Puede agregar la opción de recuperar las direcciones de correo electrónico del cuerpo del correo electrónico también, muy apreciado. Gracias.
5

¡La siguiente aplicación es gratuita y funciona de maravilla!

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

Mosquito
fuente
Otra gran utilidad. Pero todavía tengo que intentarlo.
Moiz Tankiwala
1
NUNCA confiaría en ninguna 'aplicación en línea', hay tantas estafas por ahí acertando un / pw y todas sus direcciones de correo electrónico. Vaya con la aplicación instalada: conexión HTTPS.
Tino Mclaren
Estoy de acuerdo en que debes ser cauteloso, pero el tipo detrás de Labnol es un buen tipo que ha publicado un montón de cosas realmente útiles. Si no confía en él pero es un poco técnico, siempre puede ir y tomar el código src al que se vincula desde ese artículo, y rodar el suyo: ctrlq.org/code/…
RedYeti
5

Confundido / No técnico / Sin idea, ¿qué hacer?

Pruebe lo siguiente paso a paso y gracias a https://webapps.stackexchange.com/a/47930/6329

paso 1. drive.google.com

paso 2. nueva hoja de cálculo

paso 3. herramientas> editor de script

paso 4. cierra la ventana emergente de introducción con el botón de cerrar

paso 5. pega el código

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);
} 

paso 6. posiciona el cursor dentro de la palabra "getEmails" en la primera línea

paso 7. haz clic en el botón de reproducir triángulo arriba en la barra de menú

paso 8. Te pide que te autentiques, haz eso

paso 9. haz clic en el botón reproducir nuevamente si aún no se ejecutó

paso 10. revisa tu hoja de cálculo original y tendrá los correos electrónicos.

Jason
fuente
4
  1. Navega a la lista. Elija el menú desplegable de opciones de casilla de verificación y seleccione todo.
  2. [En la parte superior obtendrá una opción de hipervínculo para elegir todas las conversaciones en su lista. Haga clic.] Actualización: Este paso no funciona, solo le permitirá hacer 25 a la vez, ¡qué fastidio!
  3. Luego, vaya al menú desplegable Más y elija filtrar mensajes como estos.
  4. En el diálogo de filtro, se resaltará el cuadro de texto De. Estas son todas las direcciones de origen.
  5. Cópialo.
  6. Péguelo en un editor HTML como Notepad ++ o Visual Studio.
  7. Ahora solo necesita hacer una búsqueda y reemplazar la palabra OR, reemplazar con ;o ,.
  8. Vuelva a copiar la lista y péguela en su mensaje.
Jason
fuente
Es mejor dar la respuesta. No hay necesidad de la historia detrás de esto. :-)
Yosi Mor
4

La única forma de hacer esto es

  1. Exporte todo como .txt (consulte: Exportar mensajes de Gmail a archivos de texto o HTML )
  2. Recorra todo esto y seleccione las líneas "De:" en una base de datos separada.

Nota: si usa imapsize (gratis) para el paso 1, guarde las copias de seguridad como "% FROM - El remitente del correo electrónico" y las tendrá a la vista en su directorio.

Edelwater
fuente
Tenía miedo de eso. Gracias sin embargo!
Brad
1

Descubrí una forma de hacer esto para los usuarios de Mac que usan Mac Mail y la libreta de direcciones sin necesidad de descargar software adicional. Esto funciona con Mac Mail 4.6 y la libreta de direcciones 5.0.3. No estoy seguro si funciona para otros vers o no. Esto puede funcionar de manera similar para otros programas de correo electrónico IMAP como Thunderbird, pero no puedo responder por eso.

Aquí están los pasos:

  1. Configure su cuenta de Gmail en Mac Mail. Asegúrese de que el servidor de correo entrante sea "imap.gmail.com". Puede encontrarlo en la barra de herramientas> Correo> Preferencias> Cuentas.
  2. En Gmail, cree una etiqueta para los correos electrónicos para los que desea extraer direcciones de correo electrónico.
  3. En Gmail, etiquete todos los correos electrónicos que desee según la etiqueta anterior.
  4. En Gmail, vaya a Configuración> Etiquetas y marque la casilla de la nueva etiqueta que creó que dice "Mostrar en IMAP".
  5. Reinicie Mac Mail para que la nueva etiqueta de Gmail se sincronice.
  6. Libreta de direcciones abierta. Si usa la Libreta de direcciones para sus contactos, deberá hacer una copia de seguridad de sus contactos porque necesita eliminar todos los contactos en la Libreta de direcciones. Creo que puede hacer esto con Archivo> Exportar> Archivo de libreta de direcciones. No uso la libreta de direcciones que no sea para exportar correos electrónicos de Gmail, por lo que no puedo dar buenos consejos al respecto. Elimine los contactos de la libreta de direcciones bajo su propio riesgo.
  7. En la libreta de direcciones, elimine todos sus contactos. Debería poder hacer esto seleccionando un contacto, presionando Comando + a y presionando la tecla Eliminar.
  8. En Mac Mail, busque su carpeta IMAP. Debe haber una columna en el lado izquierdo de la ventana con todos sus buzones. Si no va a la barra de herramientas superior, seleccione Ver> Mostrar buzones o presione Comando + Mayús + M. La carpeta IMAP estará hacia la parte inferior de la columna debajo de "Recordatorios", "RSS", "En mi Mac", etc. Debería ver el nombre de su cuenta de Gmail que configuró anteriormente con una flecha desplegable a la izquierda.
  9. En Mac Mail, haga clic en la flecha desplegable junto a su buzón. Esto le mostrará una lista de carpetas y debería mostrar la etiqueta que creó en Gmail como una carpeta. Seleccione esta carpeta haciendo clic en ella.
  10. En Mac Mail en la ventana Mensajes, que ahora debería mostrar todos sus correos electrónicos para su etiqueta de Gmail), seleccione todos los correos electrónicos de la lista. Vaya a la barra de herramientas superior, seleccione Mensajes> Agregar remitentes a la libreta de direcciones o presione Shift+ Command+ Y. Todos los remitentes de su etiqueta de Gmail ahora deberían estar en la libreta de direcciones.
  11. En la Libreta de direcciones ahora puede exportar contactos como vCards para usar en el programa que desee yendo a la barra de herramientas y seleccionando Archivo> Exportar> Exportar vCards. Incluso puede volver a importar a Contactos de Google. Si necesita un archivo CSV, desafortunadamente tendrá que importar las vCards a otro programa (Google Contacts funciona) y volver a exportar porque no puede exportar CSV desde Mac Mail.

¡Espero que esto ayude! Es un poco engorroso, pero funciona para mí y es bastante fácil después de hacerlo un par de veces.

JP5678
fuente
0

MineMyMail recupera todos sus mensajes a través de IMAP y luego extrae las direcciones de correo electrónico.

Puede elegir qué carpetas busca seleccionando la carpeta / etiqueta "Correo enviado".

Jason Vallery
fuente
¿Es confiable MineMyMail? Fui a su sitio y Chrome me advirtió que el certificado ha expirado. No tener un certificado HTTPS adecuado y pedirles a los usuarios que ingresen su nombre de usuario y contraseña de Gmail definitivamente da miedo. Me lleva a sospechar que el sitio podría extraer los correos electrónicos y usarlo para su propio envío de correo no deseado o venderlo a otros spammers.
Moiz Tankiwala
0

Exportador de direcciones IMAP es una aplicación para Mac que se conecta a cualquier cuenta de correo electrónico IMAP y extrae todas las direcciones de remitentes, también de las carpetas / etiquetas que configuró anteriormente. Para ser justos, debo destacar que está desarrollado por mi empresa.

flip79
fuente