Private/Read-MimeMessage.ps1
function Read-MimeMessage { [cmdletbinding(DefaultParameterSetName="String")] Param ( [parameter(Mandatory=$true,Position=0,ValueFromPipeline=$true,ParameterSetName="String")] [ValidateNotNullOrEmpty()] [string[]] $String, [parameter(Mandatory=$true,Position=0,ValueFromPipeline=$true,ParameterSetName="EmlFile")] [ValidateScript({Test-Path $_})] [string[]] $EmlFile ) Begin { [System.Reflection.Assembly]::LoadFrom("$ModuleRoot\nuget\MimeKit.1.10.1\lib\net451\MimeKit.dll") | Out-Null $results = @() } Process { if ($PSCmdlet.ParameterSetName -eq "String") { $Guid = (New-Guid).Guid $String | Set-Content "$env:TEMP\Mime$Guid.eml" -Force $results += [MimeKit.MimeMessage]::Load("$env:TEMP\Mime$Guid.eml") do { try { Remove-Item "$env:TEMP\Mime$Guid.eml" -Force } catch {} } until (!(Test-Path "$env:TEMP\Mime$Guid.eml")) } else { $results += [MimeKit.MimeMessage]::Load($EmlFile) } } End { return $results } } |