我想使用PowerShell命令在Outlook中创建自动规则。我尝试过单个用户,可以使用命令创建文件夹,我希望它为所有邮寄我的用户创建文件夹。以下是我用于创建单个文件夹的代码。
$GetOutlook = New-Object -com "Outlook.Application"
$olName = $GetOutlook.GetNamespace("MAPI")
$olxEmailFolder = $olName.GetDefaultFolder(6) #‘olFolderInbox’
$olxEmailFolder.Name
$SubFolders = $olxEmailFolder.Folders
ForEach ($Folder in $SubFolders) {
$Folder.Folder
$sname= "Mohit"
ForEach($SubSubFolder in $Folder) {
$fname= $SubSubFolder.Name
if ($sname -ne $fname )
{
$comments = @'
Script name: Create-Folder.ps1
Created on: Monday, January 17, 2018
Author: kundan
Purpose: How can I use Windows Powershell to
Create a New Folder in Microsoft Outlook?
'@
#-----------------------------------------
------------
function Release-Ref ($ref)
{
([System.Runtime.InteropServices.Marshal]::ReleaseComObject(
[System.__ComObject]$ref) -gt 0)
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
}
#-----------------------------------------------------
$olFolderInbox = 6
$o = new-object -comobject outlook.application
$n = $o.GetNamespace("MAPI")
$f = $n.GetDefaultFolder($olFolderInbox)
$nf = $f.Folders.Add("$sname")
$a = Release-Ref($nf)
$a = Release-Ref($f)
$a = Release-Ref($n)
$a = Release-Ref($o)
}
else
{
echo "folder already exist"
}
}
}
答案 0 :(得分:0)
powershell运行一次。如果要为每个发件人名称创建一个文件夹,则需要为Outlook开发一个与Outlook一起使用的COM加载项。
看起来您需要创建一个加载项,该加载项可以为发件人创建一个文件夹,然后移动在那里收到的项目。要完成工作,您需要处理Application类的NewMailEx事件,该事件将针对Microsoft Outlook处理的每个接收项触发一次。该项可以是几种不同项类型之一,例如,MailItem,MeetingItem或SharingItem。 EntryIDsCollection字符串包含与该项对应的条目ID。请注意,当EntryIDCollection包含自上次触发事件以来收件箱中收到的所有项目的逗号分隔条目ID列表时,此行为已从事件的早期版本更改。
当新邮件到达收件箱时以及客户端规则处理发生之前,NewMailEx
事件将触发。您可以使用EntryIDCollection
数组中返回的条目ID来调用NameSpace.GetItemFromID
方法并处理该项目。
在事件处理程序中,您可以获取发件人名称并创建相应的文件夹。然后,您可以使用MailItem类的Move方法将Microsoft Outlook项目移动到新文件夹。