Причина и исправление «Операция не может быть выполнена, поскольку сообщение было изменено» в Outlook-VSTO
Код, который я пытаюсь заставить работать, просто добавляет «C» к теме письма или удаляет ее, если она уже есть. Следующее является просто упрощением исходной задачи, которое приводит к той же проблеме. Я использую .NET framework 4.7.2 и надстройки Express Regions для пользовательского интерфейса (что, я думаю, не имеет значения).
Класс ThisAddIn содержит следующее:
И событие button-click в форме имеет только этот код:
И это на самом деле отлично работает для писем из моего личного почтового ящика, но создает исключения для писем из Exchange, поэтому те, которые я загружаю, нажимая эту кнопку:

Нажатие кнопки один раз работает нормально, но повторное нажатие всегда вызывает System.Runtime.InteropServices.COMException с сообщением «Функция не может быть выполнена, поскольку сообщение было изменено». как сообщение. Который я получаю, так как это действительно было изменено. И просматривая StackOverflow, я прочитал, что я должен освободить COM-объекты с помощью System.Runtime.InterServices.Marshal.ReleaseComObject() . Мой вопрос здесь:
- Почему я должен явно выпускать объекты в 2022 году? Такое ощущение, что я делаю что-то устаревшее.
- Как? Это действительно правильный метод?
- Что (отпустить)? Почта? Исследователь? Все? Я особенно смущен этим, так как что бы я ни пытался выпустить, это, похоже, не исправляет. Кроме того, где я могу выпустить «это» — в ThisAddIn или в форме?
Я ценю любую помощь!
ИЗМЕНИТЬ
Я изменил код нажатия кнопки на:
И все равно получаю ту же ошибку. Единственное, что я не выпустил, — это Приложение, выпуск которого кажется не очень хорошей идеей. Однако после исключения я могу снова сохранить. Так что каждая вторая попытка работает.
2 ответа
Не оставляйте объекты живыми, если они вам не нужны для запуска событий. В противном случае у вас могут возникнуть проблемы с синхронизацией с Exchange. Это также возможное указание на использование кода (изменение объектов) в нескольких потоках. Вместо этого вы можете получить выбранные в данный момент элементы из класса региона, где обрабатывается нажатие кнопки.
Обратите внимание, что в областях формы надстройки Express вы можете использовать свойства ExplorerObj или InspectorObj , чтобы получить элементы, для которых отображается область формы.
Если вы не используете Marshal.ReleaseComObject , он будет выпущен GC в неопределенное время в будущем через несколько секунд. Если объект все еще жив (до того, как GC освободит его), Outlook кэширует его и возвращает тот же устаревший объект. Это не было бы проблемой, но Exchange любит настраивать объекты после их сохранения. Например. следующая последовательность приведет к ошибке, которую вы видите:
- Вы изменяете объект
- Поставщик OST отправляет изменения на сервер
- Обмен модифицирует его
- Изменение вытягивается с сервера в OST
- Вы снова изменяете тот же объект из (1).
Решение состоит в том, чтобы освобождать объекты, как только вы закончите с ними, чтобы они снова открывались в следующий раз, когда вам нужно их изменить.
Невозможно выполнить эту операцию так как сообщение было изменено outlook
Доброго всем дня!
Один из пользователей начал жаловаться, что его Outlook неадекватно себя ведёт. Пишет он ответ, пытается отправить, а аутглю ему вот такое сообщение: "Невозможно выполнить эту операцию, так как сообщение было изменено." Бывает ещё вот такое: "Невозможно выполнить операцию. Интерфейс передачи сообщений возвратил неизвестную ошибку. Если это повторится, перезагрузите Outlook."
Сообщение об ошибке Outlook при попытке переместить сообщения электронной почты в папки
при попытке переместить письма в мои личные папки, я получаю это сообщение:
» невозможно переместить элементы. Элемент не может быть перемещен. Это было либо уже
перемещено или удалено, или доступ запрещен.»
Это происходит с обеих новые письма, и старые письма.
Я где-то изменил настройку, не осознавая этого?
9 ответов
когда в статусе по электронной почте, изменения, т. е. от непрочитанных читать и вам попробовать, чтобы переместить его, вы получите это сообщение, пока вы не можете пометить элемент как прочитанные/непрочитанные; который, кажется, чтобы получить в Outlook непослушные внимание еще на одну деталь — то вы можете переместить элемент, который вы изначально хотели двигаться. Это ошибка, и я сомневаюсь, что кто-то вообще обратит на нее внимание.
Я бы предложил закрыть Outlook и запустить scanpst.exe инструмент, чтобы убедиться, что нет никаких проблем с файлом pst. Этот инструмент присутствует в
C:\Program файлы\Microsoft Office\Office12\SCANPST.EXE
расположение в Windows XP.
решение от support.microsoft.com:
при попытке переместить или скопировать сообщение из папки «Входящие» или личной папки (.PST) файл в общую папку, появляется одно из следующих сообщений об ошибке: не удается переместить элементы. Не удалось переместить элемент. Он либо уже перемещен, либо удален, либо доступ запрещен.
эта проблема может возникнуть, если явный запрет установлен для группы » все » в одном из следующих разрешений на корневой общедоступной дерево папок:
чтобы устранить эту проблему, удалите явный запрет для группы все на эти разрешения:
Запустите Диспетчер Exchange.
под объектом Folders щелкните правой кнопкой мыши объект Public Folders, и затем щелкните свойства.
перейдите на вкладку Безопасность и выберите группу все.
снимите флажок запретить для трех следующих разрешения:
Нажмите кнопку Применить, а затем нажмите кнопку ОК, чтобы закрыть свойства.
Как отозвать письмо в Outlook: пошаговая инструкция для всех версий

Ничего и никого идеального нет, все, даже мастера своего дела, совершают ошибки. Что уж говорить о рядовом пользователе компьютером. По невнимательности, в спешке или по неосторожности от может отправить письмо не тому адресату или получить возможность отредактировать содержимое вложения. Ну забыл прикрепить документ или изменилась ситуация, сделав отправленное сообщение неактуальным. В этих и иных подобных случаях полезно использовать функцию отмены отправленного сообщения. Давайте рассмотрим, как отозвать письмо в Outlook 2007-2016.
Пару слов о Microsoft Outlook
Аутлук – почтовый клиент, мессенджер и индивидуальный менеджер от Microsoft с функциями отслеживания офисных документов и обмена сообщениями. Чаще всего используется как почтовый сервер для совместной работы в пределах одной компании или отдела.
Позволяет организовывать общие почтовые ящики, календари, конференции, согласовывать текстовые документы и многое другое в этом роде.

Рис. 1 – Microsoft Outlook
Ограничения
Отозвать отправленное письмо в любой версии Outlook можно только в том случае, если адресат не открыл и не прочитал его или не пометил как прочтенное. Иначе сделать это сможет только администратор системы через PowerShell или иными средствами.
Дополнительные условия, не позволяющие осуществить отзыв письма в Outlook:
- используется отличный от outlook.com адрес электронной почты;
- не работаете с сервером Exchange (в перечень его возможностей входит возврат и удаление отправленных писем);
- адресат активировал режим автономного функционирования в настройках свой учётной записи;
- на компьютере адресата включено кэширование – все входящие сообщения хранятся на ПК, и отмена отправки письма Outlook ни к чему не приведёт.
В остальных ситуациях возможна отмена отправки или редактирование исходящего сообщения.
В почтовом клиенте Outlook от Microsoft, любой версии делается это выполнением практически одних и тех же действий, но ввиду отличия интерфейса новички не всегда ориентируются, где находятся исходящие письма в Outlook или отправленные, например, 2007 и в Outlook 2013, поэтому мы рассмотрим процесс для всех редакций почтового клиента.
Отмена письма в Outlook 2003
Далеко не все частные компании, а тем более государственные, успевают обновлять оборудование, шагая в ногу со скоростью технического прогресса. В итоге во многих учреждениях работают под управлением Windows XP, а в качестве офисных приложений на них установлен Office 2003.
Но уже он позволят возвращать отправленные сообщения и изменять их содержимое.

Рис. 3 – Удаление отправленного письма в Outlook 2003

Рис. 4 — Выбираем между удалением и редактированием
Если оно не прочитано, сообщение будет удалена из входящих в адресата, а вы получите уведомление об этом.
Редактирование отправления в Outlook 2007
Старенькая версия почтового клиента поддерживает большинство функций, присущих новой редакции программы, в том числе в ней можно отозвать отправленное сообщение. Для этого выполняем шаги приведенной ниже инструкции.
Рис. 2 – Изменение сообщения в Outlook 2007
В той же вкладке активируем кнопку Отслеживание и проверяем статус отправления. Если спустя несколько минут исходное сообщение не было отменено или изменено, скорее всего оно прочитано. Но и после этого получатель получит уведомление в внесённых изменениях.
Отзываем сообщение в Outlook 2010, 2013
Теперь покажем, как в Outlook 2010 и 2013 годов отозвать сообщение. Действия будут аналогичными, и повторяться, чтобы сделать то же самое для каждой версии программы, смысла не имеет.
Итак, если успели нажать на клавишу «Отправить письмо», а затем поняли, что в него нужно внести правки, выполняем следующую цепочку действий. В первую очередь нужно открыть отосланное сообщение. Делается это следующим образом:

Рис. 5 – Повторная отправка в Outlook 2007
Опция отслеживания исходного сообщения позволит увидеть, отзыв выполняется успешно или он не осуществился по одной из перечисленных выше причин.
Отзыв письма в Outlook 2016
Возврат и редактирование сообщения в Microsoft Outlook 2016, который мало чем отличается от процесса в старых версиях клиента. Все осталось неизменным, в плане расположения и функционала.

Рис. 6 – Панель действий

Рис. 7 – Выбор операции с отправлением
При успехе вам придёт уведомление об этом.

Рис. 8 – Успешный отзыв
Во втором случае (редактирование), изменяем исходный текст и вложения и отправляем заново.

Рис. 9 – Редактируем исходное сообщение
Если команда отзыва и повторной отправки на втором шаге не обнаруживается или не активна кнопка (окрашена в серый цвет), значит не выполнено одно из требований выше или у вас нет учетной записи Exchange.
Проверить наличие Microsoft Exchange можно следующим образом:

Рис. 10 – Проверка наличия аккаунта Exchange

Рис. 11 – Тип учётной записи
Через браузер или Outlook Web App
Всё то же самое можно проделать через интернет-обозреватель.

Рис. 12 — Вход в электронную версию Outlook

Рис. 13 – Отмена сообщения через браузер
Подведем итоги
Мы рассмотрели все способы, как отозвать отправленное письмо в Outlook начиная с 2003 версии и заканчивая 2016, при использовании почтового сервера Exchange. А также рассмотрели, как правильно отозвать сообщение через веб интерфейс в онлайн версии почтового клиента.