$outlook
=
new-object
-com
outlook.application
$olFolders
=
"Microsoft.Office.Interop.Outlook.OlDefaultFolders"
-as
[type]
$namespace
=
$outlook
.GetNameSpace(
"MAPI"
)
$sentItems
=
$namespace
.getDefaultFolder(
$olFolders
::olFolderSentMail)
$alreadyAddedEmails
= @()
$counter
= 0;
$totalItems
=
$sentItems
.items.count;
Write-Host
"Scanning through"
$totalItems
"emails in SentItems"
$contacts
=
$outlook
.Session.GetDefaultFolder(
$olFolders
::olFolderSuggestedContacts)
Function
AddToSuggestedContactsIfNotAlreadyAdded (
$name
,
$email
)
{
if
((
$name
-eq
"
") -or ($email -eq "") -or ($name -eq $null) -or ($email -eq $null)){
return;
}
if ($name -like '*@*') {
$name = $null
}
else {
$name = $name.Replace("
'
", "").Replace("""", "")
}
$contactAlreadyAdded = $false
foreach ($elem in $global:alreadyAddedEmails) {
if(($elem.ToLower() -eq $email.ToLower())){
$contactAlreadyAdded = $true
if ($name -eq $null) { $name = "
** No Display Name **
" }
Write-Host ($global:counter)"
/
"($totalItems) "
SKIPPED
" $name.PadRight(25,"
") "
-
" $email
return;
}
}
if(!$contactAlreadyAdded ) {
$newcontact = $contacts.Items.Add()
$newcontact.FullName = $name
$newcontact.Email1Address = $email
$newcontact.Save()
$global:alreadyAddedEmails += $email
if ($name -eq $null) { $name = "
** No Display Name **
" }
Write-Host ($global:counter)"
/
"($totalItems) "
ADDED
" $name.PadRight(25,"
") "
-"
$email
}
}
$sentItems
.Items | % {
$_
.Recipients | %{
AddToSuggestedContactsIfNotAlreadyAdded
$_
.Name
$_
.Address
}
$global:counter
=
$global:counter
+ 1
}