我是Powerhell的新手。我確實給我的郵件寄了一封郵件,裏面有一個excel表格。我能夠根據主題編寫代碼來分離電子郵件,但我無法理解如何獲取該電子郵件中的Excel內容並將其保存到某個本地文件。使用powershell從outlook郵件中讀取excel內容
感謝, Sidharth
我是Powerhell的新手。我確實給我的郵件寄了一封郵件,裏面有一個excel表格。我能夠根據主題編寫代碼來分離電子郵件,但我無法理解如何獲取該電子郵件中的Excel內容並將其保存到某個本地文件。使用powershell從outlook郵件中讀取excel內容
感謝, Sidharth
您可以輸出從郵件正文和3種不同格式的郵件對象:
MailItemObject.Body
MailItemObject.HTMLBody
MailItemObject.RTFBody
的簡單文本方法將採取左到右的每一行,並將其添加到您以後可以通過解析一個字符串:
例電子郵件正文:
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循環」的縮進我似乎可以得到它,以顯示正確
非常感謝理查德。但優秀的內容來自於身體本身。那麼有沒有什麼辦法解析電子郵件正文並對其進行處理。以下是我用於根據主題創建規則來整理電子郵件的代碼http://msdn.microsoft.com/en-us/magazine/dn189202.aspx – user2310029 2013-04-24 06:15:49
@ user2310029查看編輯後的答案,看看是否可以幫助您以任何方式。 – Richard 2013-04-24 09:36:21
這是一個好主意。但是這對身體不起作用。仍然適用於Subject MailItemObject.Subject>'C:\ emailBodyText.txt') – user2310029 2013-04-25 06:51:46
如果你已經有一些代碼部分的工作,職位這樣人們可以幫助你理解它並修復錯誤/缺失的情況。 – alroc 2013-04-23 11:08:25
從此鏈接獲取代碼。 http://msdn.microsoft.com/en-us/magazine/dn189202.aspx – user2310029 2013-04-24 06:17:23