Надсилання, читання та організація повідомлень на сервері Exchange

Contents
[ ]

Отримати інформацію про поштову скриньку Exchange за допомогою EWS

Aspose.Email дозволяє отримати деталі поштової скриньки з Microsoft Exchange за допомогою IEWSClient клас. Викликаючи GetMailboxInfo() метод, клієнт повертає ExchangeMailboxInfo об’єкт, що містить корисні URI папок, таких як Mailbox, Inbox, Drafts та Sent Items.

Щоб підключитися до сервера Exchange за допомогою Exchange Web Services (EWS), використовуйте IEWSClient клас. Цей клас використовує EWS для підключення та управління елементами на сервері Exchange.

Наступний фрагмент коду демонструє, як отримати інформацію про поштову скриньку за допомогою служби Exchange Web Services.

Надсилання електронних листів через EWS

Ви можете надсилати електронні листи через Exchange, викликавши IEWSClient->Send() метод. Він приймає MailMessage об’єкт і відправляє його безпосередньо через сервер за допомогою EWS.

Наступний приклад коду демонструє, як надіслати HTML‑повідомлення через сервер Exchange, використовуючи Exchange Web Services (EWS) з Aspose.Email для C++. Він показує повний процес встановлення з’єднання з Exchange, створення поштового повідомлення з відправником, одержувачем, темою та HTML‑вмістом, а потім надсилання повідомлення за допомогою методу Send клієнта EWS.

Читання листів з поштової скриньки іншого користувача

Деякі облікові записи на серверах Exchange мають право доступу до кількох поштових скриньок, а деякі користувачі мають кілька електронних облікових записів на одному сервері Exchange. У обох випадках користувачі можуть отримати доступ до поштових скриньок інших користувачів за допомогою Aspose.Email. API надає механізм доступу до папок і листів з інших поштових скриньок за допомогою IEWSClient клас. Цю функціональність можна реалізувати за допомогою перевантаженого GetMailboxInfo() методу, передаючи адресу електронної пошти користувача як параметр.

Наступний фрагмент коду показує, як читати електронні листи за допомогою IEWSClient клас.

Список повідомлень за допомогою EWS

Aspose.Email для C++ дозволяє отримувати метадані повідомлень з поштових скриньок Exchange Server через IEWSClient. Використовуючи EWS‑based ListMessages API, ви можете вивести список повідомлень з будь-якої папки, переглядати метадані повідомлень та реалізовувати посторінкове навантаження для великих поштових скриньок.

Список повідомлень з Вхідних

Використати ListMessages для отримання базової інформації про повідомлення, такої як тема, відправник, отримувачі та ідентифікатор повідомлення, з Вхідних або будь-якої папки.

Наступний приклад коду демонструє, як вивести список і відобразити базову інформацію про всі повідомлення на сервері Exchange.

  1. Створіть екземпляр IEWSClient.
  2. Викличте ListMessages з URI цільової папки.
  3. Перебирайте ExchangeMessageInfoCollection.

Список повідомлень з будь‑якої папки

ListMessages приймає будь-який дійсний URI папки, дозволяючи виводити елементи з Видалені, Чернетки, Відправлені або користувацькі папки. Використайте IEWSClient->get_MailboxInfo->xxxFolderUri властивість для отримання URI різних папок.

Наступний приклад коду демонструє, як отримати доступ до різних URI папок Exchange Server та отримати повідомлення з вказаної папки.

Посторінкова навігація у списку повідомлень

Для великих поштових скриньок використовуйте ListMessagesByPage для завантаження повідомлень у менших блоках.

Наступний приклад коду демонструє, як реалізувати пагінацію для отримання великої кількості повідомлень з вхідних на сервері Exchange.

  1. Спочатку він створює кілька тестових повідомлень на сервері.
  2. Потім використовує ListMessagesByPage метод для отримання повідомлень у менших пакетах (у цьому випадку по 5 повідомлень на сторінку), перебираючи всі сторінки до останньої.
  3. Нарешті, код перевіряє, що всі повідомлення були успішно отримані, підраховуючи загальну кількість елементів на всіх сторінках.

Отримати інформацію про тип повідомлення

Використати ExchangeMessageInfo->MessageInfoType для визначення базового типу повідомлення Exchange (наприклад, електронна пошта, запит на зустріч тощо).

Наступний приклад коду демонструє, як підключитися до сервера Exchange і отримати інформацію про тип повідомлення з папки Видалені.

Збереження повідомлень за допомогою Exchange Web Services (EWS)

Aspose.Email дозволяє отримувати повідомлення з поштової скриньки Exchange Server та зберігати їх у кількох форматах, таких як EML, потоки пам’яті та MSG. Наведені нижче приклади демонструють, як отримати інформацію про повідомлення та зберігати їх за допомогою IEWSClient API.

Зберегти повідомлення як файли EML

Щоб зберегти повідомлення поштової скриньки у вигляді файлів EML:

  1. Створіть IEWSClient екземпляра за допомогою дійсних облікових даних.
  2. Викличте ListMessages() для отримання ExchangeMessagesInfoCollection.
  3. Переберіть колекцію, щоб отримати унікальний URI кожного повідомлення.
  4. Викличте SaveMessage() для збереження кожного повідомлення на диск у форматі EML.

Наступний приклад коду демонструє, як зберігати електронні листи з вхідних на сервері Exchange у вигляді окремих файлів EML локально за допомогою Aspose.Email для C++.

Зберегти повідомлення у поток пам’яті

Замість запису на диск, ви можете зберігати повідомлення у поток пам’яті — це корисно для збереження листів у базі даних або їх обробки в пам’яті.

Наступний приклад коду демонструє, як зберігати електронні листи з вхідних на сервері Exchange у потоки пам’яті.

Зберегти повідомлення у форматі MSG

Щоб зберегти повідомлення у форматі MSG:

  1. Отримайте повідомлення за допомогою FetchMessage(), який повертає MailMessage.
  2. Викличте MailMessage::Save() з параметрами збереження MSG.

Наступний приклад коду демонструє, як отримувати та зберігати електронні листи з вхідних на сервері Exchange у вигляді файлів формату Outlook MSG.

Отримати деталі повідомлення за URI повідомлення

Коли доступний лише унікальний URI повідомлення, ви все одно можете отримати повну ExchangeMessageInfo об’єкти. The IEWSClient::ListMessages() перевантаження приймає список ідентифікаторів повідомлень (URI) і повертає ExchangeMessageInfoCollection. Використовуйте цю функцію, коли ви зберігаєте або отримуєте URI повідомлень зовні і потрібно завантажити метадані (тема, відправник, розмір тощо) без отримання повних повідомлень.

Наступний приклад коду демонструє, як створити кілька електронних листів на сервері Exchange, а потім отримати їхню інформацію за допомогою унікальних ідентифікаторів.

Отримати повний вміст повідомлення

ListMessages() повертає резюме інформацію (тема, відправник, ідентифікатори). Щоб завантажити повний вміст повідомлення — тіло, заголовки, вкладення — використовуйте FetchMessage().

Наступний приклад коду демонструє, як отримати повні повідомлення з вхідних на сервері Exchange і отримати інформацію про вкладення:

  1. Створіть IEWSClient екземпляр.
  2. Викличте ListMessages() для отримання базових метаданих повідомлення.
  3. Отримайте унікальний URI кожного повідомлення.
  4. Викличте FetchMessage() для отримання повних деталей повідомлення.

Отримати розмір повідомлення (без завантаження повного повідомлення)

Aspose.Email надає інформацію про розмір повідомлення без завантаження всього листа, через ExchangeMessageInfo::Size властивість.

Це корисно для:

  • статистика поштової скриньки
  • розрахунок квоти
  • фільтрація великих повідомлень перед завантаженням

Наступний приклад коду демонструє, як вивести список і показати метадані повідомлень, включаючи розмір, з вхідних на сервері Exchange.

Завантажити листи з публічних папок Exchange

Публічні папки Exchange дозволяють зберігати спільні повідомлення між користувачами.

Aspose.Email IEWSClient дозволяє виконувати наступні операції з цими папками та повідомленнями, що в них зберігаються:

  • Список публічних папок
  • Переглядайте підпапки рекурсивно
  • Завантажте повідомлення та збережіть їх (наприклад, як файли MSG)

Примітка: Потрібен Microsoft Exchange Server 2007 або новіший, оскільки ранні версії не підтримують EWS.

Наступний приклад коду демонструє, як рекурсивно завантажити повідомлення з усіх публічних папок та їх підпапок на сервері Exchange і зберегти їх локально у вигляді файлів Outlook MSG.

Перемістити повідомлення між папками Exchange

Ви можете переміщати повідомлення з однієї папки Exchange в іншу, використовуючи IEWSClient::MoveItem метод. Потрібно:

  • Унікальний URI повідомлення, яке потрібно перемістити.
  • Унікальний URI папки призначення.

Наступний приклад коду демонструє, як фільтрувати та перемістити певні електронні листи з вхідних на сервері Exchange у іншу папку за критеріями вмісту.

  1. Підключіться до сервера Exchange, використовуючи облікові дані EWS.
  2. Отримати інформацію про поштову скриньку (URI папок).
  3. Список усіх повідомлень з Вхідних.
  4. Переберіть кожне повідомлення.
  5. Перевірте, чи тема містить "process this message".
  6. Перемістити відповідні повідомлення у папку Видалені.
  7. Виводьте підтвердження для кожного переміщеного повідомлення.

Видалити повідомлення з папки Exchange

Ви можете видаляти електронні листи з папки за допомогою IEWSClient->DeleteMessage метод. Він приймає унікальний URI повідомлення як параметр.

Наступний приклад коду демонструє, як фільтрувати та видаляти певні електронні листи з вхідних на сервері Exchange за критерієм теми.

  1. Перебирайте повідомлення у Вхідних.
  2. Обробка листів за певними критеріями (у цьому прикладі ми шукаємо ключове слово в темі листа).
  3. Видалити відповідні повідомлення.

Копіювати повідомлення в іншу папку Exchange

Використати IEWSClient::CopyItem для дублювання повідомлення в іншу папку. Перевантажена версія повертає URI новоствореної копії.

Наступний приклад коду демонструє, як створити електронний лист на сервері Exchange і скопіювати його в іншу папку.