0

我是PowerShell的新手。我确实收到了带有主题和 Excel 表格的 Outlook 邮件。我能够编写代码来根据主题分隔电子邮件,但我无法理解如何获取该电子邮件中的 excel 内容并将其保存到某个本地文件。

谢谢, 悉达多

4

1 回答 1

0

您可以以 3 种不同格式输出电子邮件正文和邮件对象:

  • 简单的文字:MailItemObject.Body
  • HTML:MailItemObject.HTMLBody
  • RTF: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'因此,您可以将该字符串输出到文本文件(

MailItem 对象 (Outlook)


如果 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 循环”之前,您还必须整理一下缩进,因为我似乎可以让它正确显示

http://blogs.technet.com/b/heyscriptingguy/archive/2007/10/05/hey-scripting-guy-how-can-i-save-the-attachments-for-all-my-new-office-展望消息.aspx

于 2013-04-23T10:09:47.493 回答