我是PowerShell的新手。我确实收到了带有主题和 Excel 表格的 Outlook 邮件。我能够编写代码来根据主题分隔电子邮件,但我无法理解如何获取该电子邮件中的 excel 内容并将其保存到某个本地文件。
谢谢, 悉达多
我是PowerShell的新手。我确实收到了带有主题和 Excel 表格的 Outlook 邮件。我能够编写代码来根据主题分隔电子邮件,但我无法理解如何获取该电子邮件中的 excel 内容并将其保存到某个本地文件。
谢谢, 悉达多
您可以以 3 种不同格式输出电子邮件正文和邮件对象:
MailItemObject.Body
MailItemObject.HTMLBody
MailItemObject.RTFBody
Simple Text 方法将从左到右获取每一行并将其添加到一个字符串中,您稍后可以解析该字符串:
电子邮件正文示例:
Column1 Column2
1 A
2 B
3 C
简单文本输出字符串:
Column1
Column2
1
A
2
B
3
C
MailItemObject.Body > 'C:\emailBodyText.txt'
因此,您可以将该字符串输出到文本文件(
如果 excel 是您电子邮件的附件,那么您可以使用此方法将附件保存到给定文件夹。
#Outlook setup
$olFolderInbox = 6
$objOutlook = New-Object -com "Outlook.Application"
$objNamespace = $objOutlook.GetNamespace("MAPI")
$objFolder = $objNamespace.GetDefaultFolder($olFolderInbox)
$colItems = $objFolder.Items
#Fliter Unread mail
$colFilteredItems = $colItems.Restrict("[UnRead] = True")
#Change this to the folder you want to save to
$saveFilePath = "C:\myfolder"
foreach($unreadEmail in $colFilteredItems){
$NumberOfFiles = $unreadEmail.Attachments.Count
$counter = 0
While($NumberOfFiles -ne $counter){
$counter++
$fileName = $unreadEmail.Attachments.Item($counter).FileName
$unreadEmail.Attachments.Item($counter).SaveAsFile("$saveFilePath\$fileName")
}
}
注意:这是过滤未读电子邮件,因此您需要用过滤器代替我的过滤器。
此外,在使用“while 循环”之前,您还必须整理一下缩进,因为我似乎可以让它正确显示