The script below is a part of a bigger project of converting msgs to pdfs. What I'm having problem with implementing is the attachments
custom property. I'd like is for it to take custom value based on calculated value based on msg attachments. The MailItem.Attachments.Count
will not do. It includes images embeden in the body of message. This can be circumvented with the second snippet. I however cannot combide the two.
Main script:
$o = new-object -comobject outlook.application
$path = "PATH"
cd $path
gc test.csv|Select -skip 2 -First 1|%{$_|Add-Member -MemberType NoteProperty -Name 'BaseName' -Value $_.substring($_.Lastindexof('\')+1).substring(0, $_.substring($_.Lastindexof('\')+1).Lastindexof('.'));
$_|Add-Member -MemberType NoteProperty -Name 'FileName' -Value $_.substring($_.Lastindexof('\')+1);
$_|Add-Member -MemberType NoteProperty -Name 'FullName' -Value $_;
$_|Add-Member -MemberType NoteProperty -Name 'Folder' -Value $_.substring(0, $_.Lastindexof('\'));
$_|Add-Member -MemberType ScriptProperty -Name 'New Loc' -Value {if($msg.Attachments.Count -eq 0){$msgDirectory + '\Converted\'}elseif($msg.Attachments.Count -ge 1){$msgDirectory + '\Converted\' + $msgBaseName + '\'}};
$_|Add-Member -MemberType ScriptProperty -Name 'Attachments' -Value {IF ((SECOND SNIPPET) -gt 0){"YES"}ELSE{"NO}};
$msgBaseName = $_.BaseName
$msgFullname = $_.FullName
$msgDirectory = $_.Folder
$msgName = $_.Filename
$msg = $o.CreateItemFromTemplate($msgFullname)
}
Second part:
$results = 0
$msg.Attachments|%{$att = $_
$attach = $att.FileName;
$file = 'C:\Users\anowak\Downloads\Script_Test\' + $attach
$file
IF(($msg.HTMLBody) -like "*cid:$attach*"){}else{$results ++} #check if 'attachment' present in the body
$results
Apparently this will do the trick.
To explain what I've done. I placed 'second part' before
Add-Member
along withCOM Object
so that calculations can be made. I've tested it and works. The only issue is that I have to restart ISE everytime. Otherwise the$results
variable will remain populated and the script will not work as intended.