【发布时间】:2016-06-03 21:17:25
【问题描述】:
我正在尝试在 Powershell ISE 中执行一项简单的任务。
我希望能够阅读电子邮件的内容和标题,并使用write-host 在控制台中打印。
我想打印发件人的姓名,然后是他的地址。我想打印出收件人和电子邮件的主题,然后是邮件的正文/内容。我虽然这将是一件容易的事,但我遇到了一个小挫折。
为了尽量减少返回值,我创建了一个文件夹,里面只有一封电子邮件和一条短消息,以便打印和确认。
问题:
我只能打印出我想要的字段之一。当我运行脚本时,我只得到“主题”字段的值。所有其他人(SenderName、SenderAddress、To)都没有给出值,但经过研究,我确认我确实获得了这些属性的对象。
代码
Add-Type -assembly "Microsoft.Office.Interop.Outlook"
$Outlook = New-Object -ComObject Outlook.Application
$namespace = $Outlook.GetNameSpace("MAPI")
$box = $namespace.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderJunk)
$mails = $box.items
$mails|select SenderName, SenderEmailAddress, To, Subject
返回值
-
这些字段是否可以通过我的交换服务器中的某种安全措施来保护?
-
我的代码有什么问题吗?
-
为什么我不能访问这些值?我该如何解决这个问题?
我对 Outlook 的 Powershell 脚本非常陌生,但在将问题发布到此处之前,我已经对我的问题进行了相当多的研究,但我根本找不到任何解释。 我已经阅读了一些有关称为 PropertyAccessor 的信息,但从未找到用于 powershell 的信息,仅适用于 vba。这可能是一个可能的解决方案吗?
谢谢。
【问题讨论】:
-
@Matt 当我将其更改为例如:
$m.GetProperty($m.SenderName)我得到错误:Method invocation failed because [System.__ComObject] doesn't contain a method named 'GetProperty'.
标签: email powershell outlook