我是PowerShell的新手。我收到邮件给我的主题和一个excel表格。我能够编写一个代码来根据主题分离电子邮件,但我无法理解如何在该电子邮件中获取excel内容并将其保存到某个本地文件中。
谢谢, Sidharth
答案 0 :(得分:0)
您可以输出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中重新创建表
如果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循环'的缩进,因为我似乎可以让它正确显示