Why doesn't it resolve?
Code: Select all
function SendEmail
{
Param (
[Parameter(Mandatory)][string]$To,
[Parameter(Mandatory)][string]$URL,
[Parameter(Mandatory)][string]$Reason,
[Parameter(Mandatory)][string]$pic
)
#$winscript.popup("`r`r Trying to Send Email `r`r ", 4, "Windows Check", 4160)
try
{
#$Check = Get-Process -Name OUTLOOK
$Outlook = New-Object -comObject Outlook.Application
}
catch
{
write-host "outlookWasAlreadyRunning= "$Check
# check for Outlook to be running
if (($Outlook -eq $false) -or ($Outlook -eq $null))
{
$winscript.popup("`r`r Outlook is unavailable.`r`r", 4, "Access Request", 4160)
[environment]::exit(0)
}
}
write-host "Approvers= "$To
write-host "Pic= "$pic
$html = @"
<html>
<body>
$DisplayName ($UserID) is requesting access.
<br /><br />
URL: $URL
<br /><br />
Reason:<br />
$Reason <br /><br />
This is the message:<br /><br />
<img src="data:image/png;base64,{0}">
</body>
</html>
"@
#$To = $To.replace(',', ';')
# Convert image to Base64 string
$imageBase64String = [Convert]::ToBase64String((Get-Content $pic -Encoding Byte))
# Build mail message
$html = [System.String]::Format($html, $imageBase64String)
$Mail = $Outlook.CreateItem(0)
[array]$Members = $To.split(",")
$ToCount = $Members.Count
write-host "ToCount= "$ToCount
if ($ToCount -gt 1)
{
for ($i = 0; $i -lt $ToCount; $i++)
{
$Recipient += $Members[$i] + "@domain.org;"
#$Mail.Recipients.Add($Recipient)
write-host "Recipient[$i]= "$Recipient
}
}
else
{
$Recipient = $To+"@domain.org;"
#$Mail.Recipients.Add($To)
write-host "Recipient= "$To
}
$Recipient = $Recipient + 'user@domain.org;', 'user2@domain.org'
write-host "All Recipient= "$Recipient
$Recipients = $Recipient| ForEach{ $Mail.Recipients.Add($_) }
start-sleep 2
If (!($Mail.ResolveAll))
{
ForEach ($myRecipient In $Mail)
{
If (!($myRecipient.Resolved))
{
$winscript.popup("`r`r Invalid Recipient Name:.`r`n`r`" $myRecipient ", 8, "Access Request - Error", 4160)
write-host "Bad Recipient= "$myRecipient
}
}
}
$Mail.Subject = "Access Request - $curDept - $DisplayName"
$Mail.HTMLBody = $html
try
{
If ($ShiftKeyOveride -eq 1)
{
$Mail.Display()
}
else
{
$mail.Send()
}
}
catch
{
write-host "Outlook Send Error"
$winscript.popup("`r`r Access Request:`r`r`r Error Sending Email: " + $_.Exception.Message, 4, "Access Request", 4160)
}
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Outlook) | Out-Null
}