Как отправить все электронные письма из Outlook Outbox в VBA - PullRequest
0 голосов
/ 26 июня 2018

Я использую Excel VBA для создания электронных писем в Outlook, и он работает хорошо.

Dim template As Outlook.MailItem, tomerge As Outlook.MailItem
' Create E-mail
tomerge.Close olSave

Электронные письма можно затем вручную переместить в папку «Черновики» и отправить с помощью этого подпункта .

'Loop through items in Drafts folder
objDrafts.Item(i).Send

Однако у многих пользователей в папке «Черновики» есть куча дополнительных черновиков, которые они не хотят отправлять.

Если я заменю «olFolderDrafts» на «olFolderOutbox» и попытаюсь отправить их из «Исходящих». Первое сообщение отправляет, а затем я получаю «Ошибка во время выполнения» «Outlook уже начал передавать это сообщение».

Есть ли какой-нибудь способ отправить все из Исходящих или , еще лучше, есть ли способ подготовить и отправить из только что созданной папки?

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Этот ответ был вдохновлен комментарием Нагараджана выше, но есть немало изменений, необходимых по сравнению с ответом в Отправка / получение в Outlook через код . Основная проблема в том, что olSave не переводит сообщения в состояние «готов к отправке» в Outlook, поэтому запуск синхронизации с помощью syc.Start из приведенного выше ответа ничего не делает.

Вместо этого мы нашли следующий процесс простым:

  1. Переведите Outlook в автономный режим, используя «Отправить / Получить» -> «Работа в автономном режиме»
  2. Используйте Excel VBA для создания электронных писем и вместо сохранения просто .Send каждого электронного письма. Поскольку Outlook находится в автономном режиме, они будут подготовлены и готовы к отправке, но фактически не отправлены.
  3. Теперь электронные письма должны размещаться в папке «Исходящие» Outlook, и их можно просмотреть, просто обязательно нажмите кнопку «Отправить» после просмотра / редактирования сообщений, в противном случае измененное вами электронное письмо будет удалено из очереди.
  4. Когда сообщения будут готовы к отправке, переведите Outlook в режим онлайн, и они будут отправлены автоматически.
0 голосов
/ 27 июня 2018

Вам необходимо создать папку для неотправленных элементов и обрабатывать их отдельно. Как правило, папка Outbox содержит уже отправленные элементы. Так что это не подходящее место для ваших вещей.

Объектная модель Outlook предоставляет функцию Добавить класса Folders. Вы можете получить экземпляр класса Folders, используя свойство Folders класса Folder в Outlook. Подробнее об этом можно прочитать в статье Как: создать новую папку в статье Outlook .

...