当通过 Apple Mail 向某人发送电子邮件时,它会记住他们的地址,因此如果您尝试向他们发送另一封电子邮件,它会提示您 - 即使您尚未将其添加到地址簿中。
有什么方法可以导出那些记住的地址,或者将其保存到地址簿吗?
答案1
在 Mail 中,转到窗口 -> 以前的收件人。然后,您可以将它们添加到您的通讯簿中。如果您想要将列表导出到文件,您可以在终端中通过以下方式进行操作直接访问 sqlite 数据库使用 sqlite3。摘自链接(我的格式):
这比我想象的要复杂得多,但这是可能的。
Apple 邮件程序使用 Unix 中提供的名为“sqlite3”的数据库程序。可执行文件位于 /usr/bin 中。有关此程序的信息,请在终端窗口中键入“man sqlite3”。此外,网上也有相关信息,网址为 www.sqlite.org。一位从事数据库管理工作的朋友帮助我解决了这个问题。
首先,在终端窗口中进入正确的目录:
cd ~/Library/Application Support/AddressBook
感兴趣的文件是 MailRecents-v4abcdmr。
请注意,该
file
命令对此描述为:$ file MailRecents-v4abcdmr MailRecents-v4.abcdmr: SQLite database (Version 3) $ sqlite3 MailRecents-v4.abcdmr SQLite version 3.4.0 Enter ".help" for instructions sqlite>
我们来看看标题:
sqlite> .headers ON
现在,让我们获取有关此数据库文件中的内容的一些信息:
sqlite> select * from SQLITE_MASTER; /* don’t forget the semicolon */ /* lots of output */
我们对该表
ZABCDMAILRECENT
很感兴趣。请注意,最后 3 列分别称为ZLASTNAME
、ZFIRSTNAME
和ZEMAIL
。我们需要从 filename.txt 中的表列中获取这些内容。sqlite> .mode columns ZABCDMAILRECENT sqlite> .width 15 15 36 /* make sure the columns are wide enough */ sqlite> .output filename.txt /* note: no ‘;’ */ sqlite:> select ZLASTNAME, ZFIRSTNAME, ZEMAIL from ZABCDMAILRECENT; sqlite> .exit
完成。电子邮件名称和地址现在位于 中
filename.txt
,每行一个。也许某一天,苹果公司的某个人会在邮件中添加此功能。
答案2
如果使用 OS X 10.10,请使用以下代码,因为以前的收件人文件的位置已更改。我做了一些挖掘,这对我有用(以下都是一行):
sqlite3 -csv ~/Library/Containers/com.apple.corerecents.recentsd/Data/Library/Recents/Recents 'select display_name, address from contacts where kind like "email";'>~/Desktop/recent.csv
这个新的“最近”文件包含所有最近的联系人,包括 FaceTime 和 iMessage 收件人,因此添加了一个额外的过滤器以仅导出电子邮件联系人。
答案3
要导出到 CSV 文件:
以一行运行:
sqlite3 -csv ~/Library/Application\ Support/AddressBook/MailRecents-v4.abcdmr'从 ZABCMAILRECENT 中选择 ZLASTNAME、ZFIRSTNAME、ZEMAIL;'
要导出到文件“recent.csv”:
sqlite3 -csv ~/Library/Application\ Support/AddressBook/MailRecents-v4.abcdmr'从 ZABCMAILRECENT 中选择 ZLASTNAME、ZFIRSTNAME、ZEMAIL;'>recent.csv
答案4
这是一个比较笨的方法,但是方法很简单。
标记所有邮件,选择打印 - 但更改为保存为 PDF,然后导出为 Word,然后导出为 TXT 文件格式并开始使用 Text Wrangler 过滤文件。
简单但愚蠢 ;)