Отправка, чтение и организация сообщений на сервере Exchange
Получение информации о почтовом ящике 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 for C++. Он показывает полный процесс установления соединения с Exchange, создания почтового сообщения с отправителем, получателем, темой и HTML‑содержимым, а затем отправки сообщения с помощью метода Send клиента EWS.
Чтение электронных писем из почтового ящика другого пользователя
Некоторые учетные записи на серверах Exchange имеют право доступа к нескольким почтовым ящикам, а некоторые пользователи имеют несколько электронных аккаунтов на одном сервере Exchange. В обоих случаях пользователи могут получать доступ к почтовым ящикам других пользователей с помощью Aspose.Email. API предоставляет механизм доступа к папкам и электронным письмам из других почтовых ящиков, используя IEWSClient класс. Этот функционал можно реализовать с помощью перегруженного GetMailboxInfo() метода, передавая адрес электронной почты пользователя в качестве параметра.
Следующий фрагмент кода показывает, как читать электронные письма с помощью IEWSClient класс.
Список сообщений с использованием EWS
Aspose.Email для C++ позволяет получать метаданные сообщений из почтовых ящиков Exchange Server через IEWSClient. Используя основанный на EWS ListMessages С помощью API вы можете выводить список сообщений из любой папки, просматривать метаданные сообщений и реализовывать постраничную навигацию для больших почтовых ящиков.
Список сообщений из папки Входящие
Использовать ListMessages для получения базовой информации о сообщении, такой как тема, отправитель, получатели и идентификатор сообщения из папки "Входящие" или любой другой папки.
Следующий пример кода демонстрирует, как вывести список и отображать базовую информацию обо всех сообщениях на сервере Exchange.
- Создайте экземпляр IEWSClient.
- Вызвать ListMessages с URI целевой папки.
- Перебрать ExchangeMessageInfoCollection.
Список сообщений из любой папки
ListMessages принимает любой действительный URI папки, позволяя выводить элементы из папки Удалённые, Черновики, Отправленные или пользовательских папок. Используйте IEWSClient->get_MailboxInfo->xxxFolderUri свойство для получения URI различных папок.
Следующий пример кода демонстрирует, как получить доступ к различным URI папок Exchange Server и получать сообщения из указанной папки.
Пагинация в списке сообщений
Для больших почтовых ящиков используйте ListMessagesByPage для загрузки сообщений небольшими блоками.
Следующий пример кода демонстрирует, как реализовать постраничный вывод для получения большого количества сообщений из папки Входящие сервера Exchange.
- Сначала он создает несколько тестовых сообщений на сервере.
- Затем использует ListMessagesByPage метод для получения сообщений небольшими партиями (в данном случае по 5 сообщений на страницу), перебирая все страницы до достижения последней.
- В конце код проверяет, что все сообщения успешно получены, подсчитав общее количество элементов на всех страницах.
Получить информацию о типе сообщения
Использовать ExchangeMessageInfo->MessageInfoType для определения базового типа сообщения Exchange (например, письмо, запрос на встречу и т.д.).
Следующий пример кода демонстрирует, как подключиться к серверу Exchange и получить информацию о типе сообщения из папки Удалённые.
Сохранить сообщения с использованием Exchange Web Services (EWS)
Aspose.Email позволяет получать сообщения из почтового ящика Exchange Server и сохранять их в разных форматах, таких как EML, потоки памяти и MSG. Приведённые ниже примеры показывают, как получать информацию о сообщениях и сохранять сообщения с помощью IEWSClient API.
Сохранить сообщения в файлы EML
Для сохранения сообщений почтового ящика в файлы EML:
- Создайте IEWSClient экземпляра с использованием действительных учетных данных.
- Вызвать ListMessages() для получения ExchangeMessagesInfoCollection.
- Перебрать коллекцию, чтобы получить уникальный URI каждого сообщения.
- Вызвать SaveMessage() для сохранения каждого сообщения на диск в формате EML.
Следующий пример кода демонстрирует, как сохранять электронные письма из папки Входящие сервера Exchange в виде отдельных файлов EML локально с помощью Aspose.Email для C++.
Сохранить сообщения в поток памяти
Вместо записи на диск вы можете сохранять сообщения в поток памяти — это удобно для хранения писем в базе данных или обработки их в памяти.
Следующий пример кода демонстрирует, как сохранять электронные письма из папки Входящие сервера Exchange в потоки памяти.
Сохранить сообщения в формате MSG
Для сохранения сообщений в формате MSG:
- Получить сообщение с помощью FetchMessage(), который возвращает MailMessage.
- Вызвать MailMessage::Save() с параметрами сохранения MSG.
Следующий пример кода демонстрирует, как получать и сохранять электронные письма из папки Входящие сервера Exchange в виде файлов формата Outlook MSG.
Получить детали сообщения по URI сообщения
Когда доступен только уникальный URI сообщения, вы всё равно можете получить полные ExchangeMessageInfo объекты. The IEWSClient::ListMessages() перегрузка принимает список идентификаторов сообщений (URI) и возвращает ExchangeMessageInfoCollection. Используйте эту функцию, когда вы храните или получаете URI сообщений извне и необходимо загрузить метаданные (тема, отправитель, размер и т.д.) без получения полных сообщений.
Следующий пример кода демонстрирует, как создать несколько электронных писем на сервере Exchange, а затем получить их информацию, используя уникальные идентификаторы.
Получить полное содержание сообщения
ListMessages() возвращает сводную информацию (тема, отправитель, ID). Чтобы загрузить полное содержание сообщения — тело, заголовки, вложения — используйте FetchMessage().
Следующий пример кода демонстрирует, как получить полные сообщения из папки Входящие сервера Exchange и извлечь информацию о вложениях:
- Создайте IEWSClient экземпляр.
- Вызвать ListMessages() для получения базовых метаданных сообщения.
- Извлечь уникальный URI каждого сообщения.
- Вызвать 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 в другую папку на основе критериев содержимого.
- Подключиться к серверу Exchange, используя учетные данные EWS.
- Получить информацию о почтовом ящике (URI папок).
- Список всех сообщений из папки Входящие.
- Перебрать каждое сообщение.
- Проверить, содержит ли тема "process this message".
- Переместить подходящие сообщения в папку Удалённые.
- Выводить подтверждение для каждого перемещённого сообщения.
Удалить сообщения из папки Exchange
Вы можете удалять электронные письма из папки с помощью IEWSClient->DeleteMessage метод. Он принимает уникальный URI сообщения в качестве параметра.
Следующий пример кода демонстрирует, как фильтровать и удалять определённые электронные письма из папки Входящие сервера Exchange на основе критериев темы.
- Перебрать сообщения из папки Входящие.
- Обрабатывать сообщения на основе некоторых критериев (в этом примере мы ищем ключевое слово в теме сообщения).
- Удалить подходящие сообщения.
Копировать сообщения в другую папку Exchange
Использовать IEWSClient::CopyItem для дублирования сообщения в другую папку. Перегруженная версия возвращает URI вновь созданной копии.
Следующий пример кода демонстрирует, как создать электронное письмо на сервере Exchange и скопировать его в другую папку.