У меня есть следующая программа:
Function Email{
param ($to, $Subject, $Body, $Attachment)
if($process=(get-process 'outlook'))
{
kill($process)
Stop-Process $process -Force
#$namespace = $outlook.GetNameSpace("MAPI")
#$namespace.Logon("outlook")
}
$Outlook = New-Object -Com Outlook.Application
$session = $outlook.Session
$session.Logon("Outlook")
$Mail = $Outlook.CreateItem(0)
foreach ($person in $to){
$Mail.Recipients.add($person)
}
$Mail.Subject = $Subject
$Mail.Body = $Body
$Mail.Attachments.Add($Attachment)
$Mail.Send()
}
При тестировании в ISE и в пакетном режиме она работает как положено. Однако при использовании в другом скрипте powershell он случайно вызывает зависание скрипта, и я не могу открыть Outlook вручную из-за ошибки в нескольких экземплярах.
Как мне переписать это, чтобы правильно учесть экземпляр запущенного outlook (или, по крайней мере, чтобы он не вызывал сценарий, использующий его),
Обновление : Я также пробовал это как:
Function Email{
param ($to, $Subject, $Body, $Attachment)
$Creds = Import-CliXml c:\localdata\cred.clixml
$username= myemail
Send-MailMessage -To $to -subject $Subject -body $Body -Attachment $Attachment -UseSsl -Port 587 -SmtpServer smtp.office365.com -From $username -Credential $creds
}
, и я не могу преодолеть ошибку «не удается подключиться к удаленному серверу»
Запуск te lnet smtp.office365.com 587 или te lnet smtp.office365.com 25, похоже, ничего не возвращает.