받은 Gmail 메시지에서 이메일 주소 받기


33

저에게 전자 메일을 보낸 사람의 전자 메일 주소가 포함 된 목록을 내보내려면 어떻게해야합니까? 모든 메시지를 보관했습니다.


deep-email-extractor.com 은 당신의 친구입니다. 안전하지만 안전하며 2 단계 비밀번호를 사용합니다. 나는 몇 년 전에 그것을 샀고 그것을 아직도 사용한다
Tino Mclaren

아직 답변을 게시 할 수는 없지만 (충분한 담당자는 아닙니다) 파이썬에서 여기 Jerry Neumann의 답변 은 훌륭하게 작동합니다!
Basj

답변:


13

나는 몇 가지 추가 도구를 암시하는 모든 복잡한 답변에 상당히 놀랐습니다! 받는 모든 이메일 주소는 Gmail 주소록의 '내 주소록'과 반대로 '모든 주소록'에 주소가 추가됩니다. 그 것을 내 보내면 완료됩니다 (또는 귀하의 질문에 뭔가 빠졌습니다).


그 사람이 단순한 메시지 보관이 아닌 Gmail 계정에 여전히 액세스 할 수 있다고 가정하면 효과적입니다. 좋은 해결책!
Brad

예, 동의했지만 추출 도구보다 연락처를 사용하는 데 한 가지주의 할 사항이 있습니다. 연락처가 엉망이 될 수 있습니다. OP가 메시지를 보관할 때 OP가 제안한대로 '정리'하면 많은 사람들이 처리합니다. 이 시점에서 이메일 주소가 '모두'있는지 확실하지 않습니까? 나는이 상황에 있었고 여기에서 모든 대답을 보았을 때 starbanana 하나는 아주 간단하고 우아하고 신뢰할 수 있었고 (2 단계 인증 및 응용 프로그램 암호를 사용합니다) 내 PC에서 gmail로 직접 연결되어 중간 청취자는 없습니다. .
Tino Mclaren

2
해당 설정이 켜져있는 경우에만 해당됩니다. 기본 설정이지만 쉽게 해제 할 수 있습니다. 참조 : Gmail이 자동으로 연락처를 만들지 않도록 설정
ale

28

여기에서 Google Apps Script의 기능이 시작됩니다. 새 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이 스크립트를 확인했는데 빈 레이블에서 실패합니다. 빈 레이블을 언급하는 메시지가 나타나도록 코드를 수정했습니다.
Jacob Jan Tuinstra 2016 년

7

2017 업데이트

Starbanana는 이름을 딥 이메일 추출기로 이름을 변경했으며 앱 UI를 개정하고 여러 계정에서 작동하도록 만들었습니다 (방금 내 앱에 로그인 한 상태로 발견 됨).이를 반영하기 위해 아래 링크를 변경했습니다.

원래 답변

스크립트가 아닌 빠른 데스크톱 앱이 필요한 경우이를 고려하십시오.

라벨 수준에서 작동하는 앱을 검색하고 deep-email-extractor 에서 Gmail Email Exporter를 찾았습니다 .

유료 앱이지만 그들과 아무 관련이 없지만 싸구려 특정 라벨이나 모든 Gmail 계정에서 이메일 주소를 내보낼 수 있습니다.

따라서 귀하의 경우 필터를 사용하여받은 모든 이메일을 레이블에 넣고 위의 내용을 사용하여 CSV 파일로 내 보냅니다.


1
Mac 사용자를위한 가장 저렴한 대안은 Email Contacts Extractor ( itunes.apple.com/us/app/email-contacts-extractor/… )입니다. 전체 공개 : 다른 서비스가 너무 비싸거나 이메일에 온라인으로 액세스해야한다고 생각했기 때문에 직접 개발했습니다.
hpique

20 개 이하의 주소로 버전을 만들 수 있다면 좋을 것입니다.
Dan Rosenstark

starbanana.com은 이제 본문에서 이메일도 추출합니다. 방금 시도한 결과 멀티 스레딩 (동시에 15 개의 레이블이 표시됨)도 매우 빠릅니다.
Tino Mclaren

6

@ jacob-jan-tuinstra의 답변을 바탕으로합니다. 내 필요에 맞게 약간의 수정을 시켜서 다른 사람들이 유용 할 수도 있습니다.

검색을 사용하고 라벨별로 분류하지 않으며 큰받은 편지함을 청킹합니다.

'YOUR GMAIL SEARCH QUERY GOES HERE' 라고 표시된 부분은 받은 편지함에 사용할 쿼리로 채울 수 있습니다.

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
나는 '온라인 앱'을 절대로 신뢰하지 않을 것이므로 많은 사기와 강탈 및 모든 이메일 주소가 있습니다. 설치된 앱-HTTPS 연결로 이동하십시오.
Tino Mclaren

나는 당신이 조심해야한다는 것에 동의하지만 Labnol의 배후에있는 사람은 정말 도움이되는 많은 것들을 출판 한 좋은 사람입니다. 당신이 그것을 믿지 않지만 약간의 기술적 인 사람이라면 언제든지 그 기사에서 링크 된 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. 메모장 ++ 또는 Visual Studio와 같은 HTML 편집기에 붙여 넣습니다.
  7. 이제 검색 만하고 OR이라는 단어를 바꾸 ;거나 or로 바꾸면됩니다 ,.
  8. 목록을 다시 복사하여 메시지에 붙여 넣습니다.

그냥 대답하는 것이 좋습니다. 그 뒤에 이야기가 필요하지 않습니다. :-)
Yosi Mor


1

추가 소프트웨어를 다운로드하지 않고도 Mac Mail 및 주소록을 사용하는 Mac 사용자를 위해이 작업을 수행하는 방법을 찾았습니다. 이것은 Mac Mail 4.6 및 Address Book 5.0.3에서 작동합니다. 그것이 다른 절에서 작동하는지 확실하지 않습니다. 이것은 Thunderbird와 같은 다른 IMAP 이메일 프로그램에서도 유사하게 작동 할 수 있지만 보증 할 수는 없습니다.

단계는 다음과 같습니다.

  1. Mac Mail에서 Gmail 계정을 설정하십시오. 수신 메일 서버가 "imap.gmail.com"인지 확인하십시오. 툴바> 메일> 환경 설정> 계정에서 찾을 수 있습니다.
  2. Gmail에서 이메일 주소를 추출 할 이메일의 레이블을 만듭니다.
  3. Gmail에서 위의 라벨별로 원하는 모든 이메일에 라벨을 지정하십시오.
  4. Gmail에서 설정> 라벨로 이동하여 'IMAP에 표시'라는 새 라벨 상자를 선택합니다.
  5. 새로운 Gmail 라벨이 동기화되도록 Mac Mail을 재시동하십시오.
  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. 주소록에서 이제 도구 모음으로 이동하고 파일> 내보내기> vCard 내보내기를 선택하여 원하는 프로그램에서 사용할 연락처를 vCard로 내보낼 수 있습니다. Google 주소록으로 다시 가져올 수도 있습니다. CSV 파일이 필요한 경우 불행히도 vCard를 다른 프로그램으로 가져와 (Google 주소록이 작동) Mac Mail에서 CSV를 내보낼 수 없으므로 다시 내 보내야합니다.

이것이 도움이되기를 바랍니다! 약간 성가 시지만 나를 위해 일하고 몇 번 해본 후에는 매우 쉽습니다.


0

MineMyMail 은 IMAP을 통해 모든 메시지를 가져온 다음 이메일 주소를 추출합니다.

"보낸 편지함"폴더 / 라벨을 선택하여 검색 할 폴더를 선택할 수 있습니다.


MineMyMail을 신뢰할 수 있습니까? 나는 그들의 사이트에 갔고 ​​Chrome은 인증서가 만료되었다고 경고했다. 적절한 HTTPS 인증서가없고 사용자에게 Gmail 사용자 이름과 비밀번호를 입력하도록 요청하는 것은 확실히 무섭습니다. 사이트에서 전자 메일을 추출하여 자체 스팸 또는 다른 스패머에게 판매하는 데 사용할 수 있다고 의심됩니다.
Moiz Tankiwala

0

IMAP 주소 내보내기 는 모든 IMAP 이메일 계정에 연결하고 이전에 설정 한 폴더 / 라벨에서 모든 발신자 주소를 추출하는 Mac 앱입니다. 모든 공정성에서, 나는 그것이 회사가 개발했음을 강조해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.