Есть ли способ открыть известное электронное письмо Outlook через Java 11? (Веб-или локальное)

#windows #outlook #jakarta-mail #java-11

#Windows #outlook #джакарта-почта #java-11

Вопрос:

Краткая версия:
Я хочу открыть любое конкретное электронное письмо Outlook из моего Java-приложения либо локально через приложение Outlook, либо через веб-сайт в браузере. У меня уже есть информация об электронной почте, такая как папка, идентификатор сообщения, UID, отправитель, получатель и т.д., Но не идентификатор электронной почты, используемый в URL веб-сайта Outlook. Кто-нибудь знает способ сделать что-либо из этих вещей через Java?

Длинная версия:
Я создаю программное обеспечение для моей компании на Java, которое имеет встроенный почтовый клиент для электронных писем Outlook, чтобы электронные письма могли быть связаны с заданиями различными способами. До сих пор мне удавалось добиться значительного прогресса в разделе почтового клиента с точки зрения отображения списка электронных писем и возможности отображать выбранное электронное письмо, но недавно я понял, что создание графического интерфейса для редактора электронной почты (отслеживание цепочек ответов, перетаскивание изображений для встроенных вложений и т.д.) Является Довольно сложной задачей для выполнения самостоятельно (HTML-редактору JavaFX может потребоваться много работы).

На данный момент мое простое решение — заставить мою программу открыть выбранное электронное письмо через либо:

  1. Какая-нибудь системная команда (Windows 10), вызывающая настольное приложение Outlook, чтобы отобразить электронное письмо с помощью какого-либо идентификатора (возможно, UID?). На каком-то уровне я знаю, что это возможно, потому что у нашей компании есть старая программа, написанная на C #, которая действительно может это сделать.

  2. Открываем системный браузер по умолчанию со ссылкой на «https://outlook.office365.com/mail /имя_фольдера/ идентификатор /insert_id_here «. Это мое предпочтительное решение.

Вот мои проблемы с каждым вариантом на данный момент:

  1. Похоже, я не смог найти ни одного ресурса, который давал бы ответ на этот вопрос. Самое близкое, что я могу найти, — это темы, которые объясняют, как открыть почтовое приложение по умолчанию с опциями для предварительного заполнения разделов «Кому» / «из» / «тема» / «тело» (не говоря уже о том, что вы не можете предварительно заполнить тело чем-либо, кроме текста! Вот и все для ответа / пересылки сообщений с форматированием HTML и вложениями!). Другая проблема заключается в том, что старая программа, о которой я упоминал, отображает электронные письма, находя файлы приложения Outlook (предположительно, локальный OST-файл). Я понятия не имею, как старая программа может вызывать Outlook для отображения электронных писем, и даже тогда есть шанс, что нет эквивалента Java. Однако я использую JavaMail для загрузки своей почты, поскольку считаю, что лучше обратиться к почтовому серверу Outlook для получения / отправки обновлений почты, а не ждать синхронизации приложения Outlook. Это создает проблему, потому что, даже если бы я знал, как вызвать Outlook, мое приложение может быть более современным, чем приложение Outlook (особенно если Outlook еще не открыт), и если call before Outlook обновляет, Outlook не сможет это показать.

  2. Опять же, я не могу найти ресурс для объяснения этих идентификаторов URL. Они не совпадают с UID почты, и, похоже, их нет нигде в содержимом почты при получении почты через JavaMail. Самое большее, что я смог узнать из исследования, это то, что они назывались «длинные идентификаторы», поскольку они были просто длинными строками (на вид непоследовательными), но, возможно, это было просто выдуманное название из статьи, поскольку я не нашел других ссылок на него. Есть вероятность, что это может быть какой-то закодированный UID, но я не видел в документации упоминания о том, что JavaMail нужно расшифровывать, чтобы получить UID. Я сомневаюсь, что смог бы добиться большего прогресса с помощью этой опции, но если есть решение, подобное этому (возможно, какой-то скрипт, который открывает Outlook online, выполняет поиск по некоторому идентификатору, например, по содержимому тела, и выдает первый результат? Idk много о скриптах браузера) Я был бы рад это услышать.

Комментарии:

1. Может быть, вы сможете достичь того, что пытаетесь, с помощью моста JAVA-COM, который позволяет вызывать макросы Outlook VBA?

2. @Kartoffel У вас есть какие-либо рекомендации? Я просмотрел мосты Java-COM, и наиболее упоминаемым из них, похоже, является JACOB, но он не кажется актуальным, что является проблемой, поскольку я использую Java 11. Другие мосты, которые я видел, похоже, что они остановили обновления еще раньше.

3. У меня нет никаких рекомендаций, я никогда не создавал что-то подобное — просто подумал о возможности сделать это в VBA