Не удалось отправить электронную почту powershell, используя php-скрипт для Outlook, используя iis windows server 2012

Ошибка -:

Новый объект: извлечение фабрики COM-класса для компонента с CLSID {0006F03A-0000-0000-C000-000000000046} завершилось ошибкой из-за следующей ошибки: 80010001 Звонок был отклонен вызываемым пользователем. (Исключение из HRESULT: 0x80010001 (RPC_E_CALL_REJECTED)). В D: \ get-process.ps1: 5 char: 12 + $ Outlook = Новый-Object -ComObject Outlook.Application + ~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ + CategoryInfo: ResourceUnavailable: (:) [New-Object], COMExcept ion + FullyQualifiedErrorId: NoCOMClassIdentified, Microsoft.PowerShell.Comman ds.NewObjectCommand Вы не можете позвонить метод с нулевым значением. В D: \ get-process.ps1: 6 char: 1 + $ Mail = $ Outlook.CreateItem (0) + ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ + CategoryInfo: InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId: InvokeMethodOnNull Свойство 'To' не может быть найдено на этом объекте. Убедитесь, что свойство существует и может быть установлено. В D: \ get-process.ps1: 8 char: 1 + $ Mail.To = "$ username" + ~~~~~~~~~~~~~~~~~~~~~~ + Категория: InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId: PropertyNotFound Свойство «Subject» не может быть найдено на этом объекте. Убедитесь, что свойство существует и может быть установлено. В D: \ get-process.ps1: 9 char: 1 + $ Mail.Subject = "Новый запрос на отпуск" + ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId: PropertyNotFound Свойство «Тело» не может быть найдено на этом объекте. Убедитесь, что свойство существует и может быть установлено. В D: \ get-process.ps1: 10 char: 1 + $ Mail.Body = "$ username" + ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId: PropertyNotFound Вы не можете вызвать метод в нулевом выражении. В D: \ get-process.ps1: 12 char: 1 + $ Mail.Send () + ~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId: InvokeMethodOnNull Привет, devang_gaur@outlook.com

get-process.php -:

<?php $username = "devang_gaur@outlook.com"; $psScriptPath = "D:\\get-process.ps1"; $query = shell_exec("powershell -command $psScriptPath -username '$username'< NUL"); echo $query; ?> 

get-process.ps1 -:

 param( [string]$username ) $Outlook = New-Object -ComObject Outlook.Application $Mail = $Outlook.CreateItem(0) $Mail.To = "$username" $Mail.Subject = "New Leave Request" $Mail.Body = "$username" $Mail.Send() Write-Output "Hello $username <br />" 

get-process.php – это php, который присутствует в корневой папке wwwroot IIS Windows Server 2012 и из которой запускается скрипт PowerShell get-process.ps1 . Get-process.ps1 содержит скрипт для отправки почты

Microsoft в настоящее время не рекомендует и не поддерживает автоматизацию приложений Microsoft Office от любого бездействия, неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может проявлять нестабильное поведение и / или тупиковой ситуации, когда Office запущен в этой среде.

Если вы создаете решение, которое выполняется в контексте на стороне сервера, вы должны попытаться использовать компоненты, которые были безопасны для автоматического выполнения. Или вы должны попытаться найти альтернативы, которые позволяют хотя бы часть кода запускать клиентскую сторону. Если вы используете приложение Office из серверного решения, для успешного выполнения приложения не будет достаточного количества необходимых возможностей. Кроме того, вы рискуете стабильностью своего общего решения. Подробнее об этом читайте в статье « Вопросы для автоматизации Microsoft Office» .

Вместо этого вы можете рассмотреть использование низкоуровневого API, на основе которого основан Outlook – Extended MAPI. Или любая другая оболочка вокруг этого API, например, Redemption.