使用PowerShell中的Outlook API计算邮件传输时间

时间:2017-04-21 09:13:54

标签: api powershell email outlook

1 - 所以我有以下脚本从我的Outlook收件箱中检索第12封电子邮件(我知道目前不太需要foreach):

Add-Type -assembly "Microsoft.Office.Interop.Outlook"
$Outlook = New-Object -comobject Outlook.Application -ErrorAction SilentlyContinue
$namespace = $Outlook.GetNameSpace("MAPI")


  foreach($mail in $namespace.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderInbox).Items(12) )
  {
    Write-Host "Mail subject: " $mail.TaskSubject
    Write-Host "Sent on: " $mail.SentOn
    Write-Host "Received on: "$mail.ReceivedTime
    $time = $mail.ReceivedTime -= $mail.SentOn
  }

输出:

  

邮件主题:买鞋

     

发送时间:2017/4/5 20:10:15

     

收到时间:2017/4/5 20:10:25

我能够检索发送和接收时间,但我无法相互减去它们,看看电子邮件需要多长时间。

我尝试输出$time变量,但它是空的,并且没有显示任何错误。我该如何纠正这个?

  

2 - 是否可以使用此API获取电子邮件标头?我试图绕过它,但我认为没有其他库是不可能的(因为属性EmailHeader不存在?

  

3 - 我需要一封电子邮件' expert'我的下一个问题。当我检查电子邮件的标题时,我注意到在电子邮件标题中找不到SentOnReceivedTime。有时我可以找到比我的脚本更多或更少的时间,但在其他情况下我找到0可比较的结果。

为什么会这样?

1 个答案:

答案 0 :(得分:1)

你需要使用TimeSpan功能....如何,在这种情况下,我目前还不太确定还在玩。也许你会更快得到它!功能示例

$Starttime=(GET-DATE)

$Endtime=[datetime]”04/21/2017 00:00”

NEW-TIMESPAN –Start $Starttime –End $Endtime

返回

Days              : 0
Hours             : -11
Minutes           : 0
Seconds           : -1
Milliseconds      : -987
Ticks             : -396019872099
TotalDays         : -0.458356333447917
TotalHours        : -11.00055200275
TotalMinutes      : -660.033120165
TotalSeconds      : -39601.9872099
TotalMilliseconds : -39601987.2099