关于Outlook从收件箱及已发送文件夹填充联系人的技术问询
Hey there, I totally get how frustrating it is when Outlook’s autocomplete can’t find recipients and fumbles with address suggestions—nothing slows down composing emails like that! Good news is there are a few reliable ways to get Outlook to pull contacts from your sent and received folders. Let’s break them down step by step:
方法1:重置自动完成列表,让Outlook重新抓取往来地址
Sometimes the autocomplete cache gets corrupted or out of date. Refreshing it will make Outlook re-learn addresses from your recent Inbox and Sent Items messages:
- Go to File > Options > Mail, scroll down to the Send messages section.
- Click Empty Auto-Complete List to clear the old, glitchy cache.
- From now on, every time you send or receive an email, Outlook will automatically add those addresses back to the autocomplete list. It’s a quick fix if you just need the suggestions to start working again.
方法2:批量导入往来地址到正式联系人文件夹
If you want those senders/recipients to show up reliably (and not just in autocomplete), you can bulk-add them to your Contacts folder:
- Open the folder (Inbox or Sent Items) you want to pull addresses from.
- Go to Home > Find > Search Tools > Advanced Find.
- Switch to the More Choices tab, check the box for Only items with: and select People from the dropdown menu.
- Click Find Now—this will list all unique senders and recipients from the folder.
- Select all results with
Ctrl+A, right-click, and choose Add to Contacts. This creates official contact entries that will immediately appear in autocomplete and your address book.
方法3:用VBA脚本自动同步(适合进阶用户)
If you want a hands-off way to keep your Contacts updated automatically as you send/receive emails, a simple VBA macro can do the trick:
- Press
Alt+F11to open Outlook’s VBA Editor. - Right-click your Outlook project in the left pane, go to Insert > Module.
- Paste this script (it’ll scan your Inbox and Sent Items, adding any missing addresses to Contacts):
Sub ImportAddressesFromFolders() Dim objNamespace As NameSpace Dim objFolder As MAPIFolder Dim objItem As Object Dim objRecipient As Recipient Dim objContact As ContactItem Dim strEmail As String Set objNamespace = Application.GetNamespace("MAPI") ' Target Inbox and Sent Items folders Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox) ProcessFolder objFolder Set objFolder = objNamespace.GetDefaultFolder(olFolderSentMail) ProcessFolder objFolder MsgBox "Addresses imported successfully!", vbInformation End Sub Sub ProcessFolder(objFolder As MAPIFolder) Dim objItem As Object Dim objRecipient As Recipient Dim objContact As ContactItem Dim strEmail As String For Each objItem In objFolder.Items If TypeName(objItem) = "MailItem" Then ' Add sender's address strEmail = objItem.SenderEmailAddress If strEmail <> "" Then AddContact strEmail, objItem.SenderName End If ' Add all recipients' addresses For Each objRecipient In objItem.Recipients strEmail = objRecipient.Address If strEmail <> "" Then AddContact strEmail, objRecipient.Name End If Next objRecipient End If Next objItem End Sub Sub AddContact(strEmail As String, strName As String) Dim objContact As ContactItem Dim objNamespace As NameSpace Dim objContacts As MAPIFolder Set objNamespace = Application.GetNamespace("MAPI") Set objContacts = objNamespace.GetDefaultFolder(olFolderContacts) ' Skip if contact already exists On Error Resume Next Set objContact = objContacts.Items.Find("[Email1Address] = """ & strEmail & """") On Error GoTo 0 If objContact Is Nothing Then Set objContact = objContacts.Items.Add objContact.Email1Address = strEmail objContact.FullName = strName objContact.Save End If End Sub - Run the macro by pressing
F5in the VBA Editor. You can even set it to run automatically using Outlook’s Rules if you want ongoing sync without manual input.
Hope one of these methods solves your autocomplete woes! The bulk import is great for a one-time cleanup, while the VBA script is perfect for keeping your Contacts up to date effortlessly.
备注:内容来源于stack exchange,提问作者vico

