從 Gmail 擷取電子郵件地址的做法,是把訊息文字從 Gmail 網頁介面複製出來,再貼到瀏覽器式的電子郵件擷取工具中,因為 Gmail 並沒有提供一個內建的「匯出所有寄件者地址」按鈕。因此 Gmail 的工作流程屬於複製貼上操作,而不是直接的 API 整合:你會開啟一個或多個對話,選取要挖掘的訊息本文,複製那些文字,選擇性地把不同討論串的訊息合併成單一區塊,然後把合併後的文字貼到 Email Extractor 中。擷取工具本身完全在目前的瀏覽器分頁中執行,所以候選地址的掃描、ASCII 驗證、不分大小寫的去重複,以及剪貼簿的準備作業,都不需要把訊息上傳到任何地方。在你選擇「首次出現順序」或「A–Z 排序」並執行擷取之後,輸出結果是每行一個地址,任何大小寫變體的第一種拼法都會保留,並另外顯示重複與被拒絕候選項目的數量,讓你能清楚看出哪些被過濾掉了。

how to extract email addresses from gmail
how to extract email addresses from gmail

為什麼 Gmail 需要一個額外的擷取步驟

Gmail 的設計核心是對話與搜尋,而不是匯出寄件者的通訊錄。沒有任何選單項目能產生一份「我收件匣中曾出現過的每個電子郵件地址」的平坦清單。Google Takeout 可以匯出原始郵件,但結果是一個 .mbox 檔,你仍然得用腳本來解析它。Apps Script 的做法雖然可以程式化掃描郵件信箱,但需要啟用 Google Apps Script、授予權限,以及撰寫或貼上程式碼。對於只想從幾封訊息中拉出幾十個寄件者的使用者來說,最快的途徑就是複製可見的文字,再用本地端的擷取工具(例如 Email Extractor)來處理。

這種做法同時也能避開幾個實際的陷阱。轉寄的討論串與引用的回覆,常常在方括號、以逗號分隔的 CC 名單,以及看起來像地址但其實從來不是真正寄件者的簽名檔中,夾帶數十個地址。以樣式為基礎的擷取工具能一致地處理這團混亂,最終產生一份以換行分隔的小清單,你可以貼到試算表、CRM,或其他工具中。

把 Gmail 訊息複製到擷取工具中

Gmail 這一端的工作就只是選取與複製。不需要任何匯出篩選條件,也不需要呼叫 API。

  • 開啟對話或標籤。用 Gmail 的搜尋框縮小到你想擷取寄件者的那些訊息,然後點進第一個討論串。
  • 複製每一則訊息本文。在訊息文字內點一下,按 Ctrl/Cmd+A 全選,再按 Ctrl/Cmd+C。針對其他想包含的訊息重複同樣動作。
  • 合併多個對話。如果你需要來自好幾個討論串的寄件者,就把每一則複製的訊息貼到電腦上的純文字編輯器中。合併後的區塊可以包含訊息標頭、簽名檔、引用的回覆,以及轉寄文字 —— 擷取工具會把整份內容都掃描一遍。
  • 使用桌上型瀏覽器。行動版網頁與 Gmail 應用程式在多訊息選取上不太順手。桌上型介面才是這項任務的正確操作介面。
  • 貼到擷取工具中。打開 Email Extractor,將合併後的 Gmail 文字貼到它的輸入區域。注意顯示的字元計數器;如果超過 500,000 字元,擷取作業將會失敗而不處理任何內容。

大多數擷取錯誤都是在這個步驟產生的。人們常常忘記引用的回覆中含有來自多年前的老地址,因此不小心把它們一起貼了進去。請把複製的文字當作原料,在按下擷取之前先檢視過一遍。

逐步執行擷取步驟

一旦 Gmail 文字進入輸入區域,擷取本身只需要三個動作。

  1. 確認輸入大小。確認顯示的字元計數器在 500,000 以下。如果超過,工具會回傳錯誤,而不是默默地截斷。
  2. 選擇排序方式。選擇「首次出現順序」可以讓地址保留在 Gmail 訊息中出現的順序;選擇「不分大小寫的 A–Z」則會依字母排序。
  3. 點擊「Extract emails」並複製結果。檢視結果下方出現的唯一、重複與被拒絕的數量,然後用「Copy all」把換行分隔的清單放到你的剪貼簿。如果無法取得剪貼簿權限,結果仍然可以選取,以便手動複製。

編輯輸入內容或更改排序方式會清除先前的清單、錯誤與複製狀態,因此先前文字所產生的舊結果不會留在畫面上,讓人誤以為它符合目前的文字。擷取失敗時會先清除舊結果,再回報問題,所以畫面上的狀態永遠反映實際存在的文字。

擷取工具接受與拒絕的內容

Email Extractor 識別的是刻意限縮的 ASCII 形式:本機部分允許字母、數字、點、底線、百分號、加號與連字號;接著是 @ 符號;以及一個至少含有兩個標�的 DNS 形式網域。任何超出此形式的內容都會被視為格式錯誤,並從結果中移除。下表摘要說明常見的 Gmail 風格輸入是如何被處理的。

Gmail 風格輸入結果原因
[email protected]接受標準的 ASCII 信箱,具有兩個標籤的網域。
[email protected]接受本機部分中允許出現內部的點。
[email protected] 後接 [email protected]一個結果,保留第一個拼法不分大小寫的去重複會保留首次出現的版本。
[email protected]拒絕本機部分中有連續的點。
[email protected]拒絕網域標籤不能以連字號開頭。
[email protected]拒絕網域標籤不能以連字號結尾。
https://[email protected]/private拒絕URL 的 userinfo 不會被視為聯絡地址。
內文中的 mailto:[email protected]接受為 [email protected]mailto: 前綴明確用於電子郵件傳遞。
"Alice Smith" <[email protected]>接受為 [email protected]顯示名稱與角括號會被當作周圍內文而移除。

帶引號的本機部分、註解、跳脫字元、以方括號包住的 IP 位址字面值、Unicode 形式的信箱、國際化網域名稱,以及 punycode 形式的最上層標籤,都不在支援的範圍內。部分技術上合法的 RFC 5322 信箱會被刻意排除,而且擷取出的字串並不等於該信箱實際存在或可接收郵件的證明。

限制、錯誤與邊界情況

擷取工具在碰到硬性上限時會明確失敗,而不是猜測。

限制數值會發生什麼
輸入大小500,000 個 JavaScript 字元計數器會標示出超過上限的值;擷取作業會回傳錯誤,且不處理任何內容。
唯一結果1,000 個地址如果文字中含有更多唯一地址,作業會失敗並顯示訊息,不會洩漏部分的第一千個結果。
本機部分長度64 個 ASCII 字元更長的本機部分會被拒絕。
地址總長度254 個字元更長的候選項目會被拒絕;此限制符合 RFC 5321 第 4.5.3.1 節的 SMTP 大小限制。
最後一個網域標籤2–63 個 ASCII 字母僅有單一字母或僅由數字組成的 TLD 會被視為格式錯誤而拒絕。

結尾的句點與省略號會在驗證之前被移除,而逗號、分號、右括號、引號與驚嘆號會停止候選項目的掃描。附加在某個地址形狀後綴上的 Unicode 文字,會被當作單一不支援的候選項目整個拒絕,而不是只回傳其 ASCII 尾部。擷取失敗時會先清除舊結果,再回報問題,因此先前文字所產生的清單不會留在畫面上,讓人誤以為它符合目前的文字。

擷取結果無法證明的事

在 Gmail 文字中找到一個看起來像電子郵件地址的樣式,與該地址是否可遞送毫無關係。擷取工具不會查詢 DNS、聯絡 SMTP 伺服器、傳送驗證訊息、追蹤連結,或開啟那些地址。它只檢查你所貼上的字元。擷取出的字串可能屬於一個早已刪除的帳號、角色信箱、拋棄式服務,或含有拼字錯誤的網域。Email Extractor 同樣也不會偵測同意狀態、抑制清單狀態,或關於你被允許聯絡哪些對象的管轄規定。

在向任何擷取出的地址發送郵件之前,請先確認收件者已明確同意、確認你的用途符合當地法規,並確認來源文字確實代表一個真實且願意的寄件者。對於高風險的帳號建立或遞送性工作,請將樣式擷取與 DNS 檢查、退信處理,以及人工審核結合使用。如果你還需要從同一批 Gmail 討論串中擷取電話號碼,電話號碼擷取指南會逐步說明平行的操作流程。

當 Gmail 本身不是正確的來源時

如果你的目標是永久封存,而不是一份寄件者清單,Google Takeout 的 .mbox 匯出仍然是合適的起點,因為它會擷取每一則訊息,包括草稿與垃圾郵件。Email Extractor 對貼上的文字與小型匯出處理得很好,但它並不是設計來直接開啟 .mbox 檔的。對於非常大的郵件信箱,請先將匯出內容拆成較小的文字檔,再分別�入,並注意唯一結果的數量,讓每次執行都保持在 1,000 個地址的上限以下。

若是從試算表儲存格(而非 Gmail)擷取聯絡人清單,專門的 Excel 指南會以不同的複製來源說明相同的樣式。無論哪一種情況,擷取步驟本身都相同:貼上、選擇排序、執行,然後在信任這份清單之前先檢視各項數量。

如果你正在權衡各種選項,Strip an Emoji Reaction From Outlook Email Text對此有詳細說明。