Читать входящие сообщения 2-й учетной записи и запустить Outlook на сервере? - PullRequest
0 голосов
/ 20 июня 2019

У меня есть собственная учетная запись почтового ящика плюс еще один общий почтовый ящик, определенный в outlook. Мне нужно получить доступ ко второму почтовому ящику через powershell. Как я могу указать другой аккаунт?

Два вопроса:
(1) Если у меня есть вторая учетная запись, добавленная в Outlook, как я могу получить к ней доступ?

$Outlook = New-Object -ComObject Outlook.Application  
$OutlookInbox = $Outlook.session.GetDefaultFolder(6)  
$TotalEmailCount = $OutlookInbox.Items.Count

$TotalEmailCount

(2) Можно ли запустить сценарий powershell на сервере, если сценарий выполняется как пользователь домена, являющийся локальным администратором?

1 Ответ

0 голосов
/ 21 июня 2019

Метод NameSpace.GetSharedDefaultFolder возвращает объект Folder, представляющий указанную папку по умолчанию для указанного пользователя.Например, пример VBA (объектная модель Outlook является общей для всех языков программирования):

Sub ResolveName() 
  Dim myNamespace As Outlook.NameSpace  
  Dim myRecipient As Outlook.Recipient  
  Dim CalendarFolder As Outlook.Folder  

  Set myNamespace = Application.GetNamespace("MAPI")  
  Set myRecipient = myNamespace.CreateRecipient("Eugene Astafiev")  
  myRecipient.Resolve  
  If myRecipient.Resolved Then  
    Call ShowCalendar(myNamespace, myRecipient)  
  End If  
End Sub 

Sub ShowCalendar(myNamespace, myRecipient)  
  Dim CalendarFolder As Outlook.Folder  

  Set CalendarFolder = myNamespace.GetSharedDefaultFolder(myRecipient, olFolderCalendar) 
  CalendarFolder.Display  
End Sub

Также, если вы уже добавили в Outlook вторую учетную запись, вы можете рассмотреть возможность использования Stores свойство класса Namespace, которое возвращает объект коллекции Stores, представляющий все объекты `Store`` в текущем профиле.В статье Работа с учетными записями, магазинами, папками и элементами Outlook приведен пример кода для работы с несколькими хранилищами и папками.Например:

$Outlook = New-Object -ComObject Outlook.Application  
$OutlookInbox = $Outlook.session.Stores(1).GetDefaultFolder(6)  
$TotalEmailCount = $OutlookInbox.Items.Count

$TotalEmailCount

Можно ли запустить сценарий powershell на сервере, если сценарий выполняется как пользователь домена, являющийся локальным администратором?

Outlook долженбыть установлен на машине, где вы хотите запустить скрипт.

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

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

  1. Веб-службы Exchange, см. Начало использования веб-служб в Exchange
  2. Расширенный MAPI
  3. Любые другие сторонние компонентыпредназначен для исключения на стороне сервера.
...