Обработка перетаскиванием из Thunderbird
-
13-09-2019 - |
Вопрос
Кто-нибудь когда-нибудь обрабатывал перетаскивание электронных писем из thunderbird?какие-нибудь ссылки ссылаются на код?
Я хочу иметь возможность перетаскивать электронные письма из thunderbird в свое приложение?
Решение
Похоже, что это невозможно.Хотя, кажется, я не могу найти никакой реальной документации, вот что удалось обнаружить в ходе моих экспериментов на данный момент.
Thunderbird предоставляет отправленные данные со следующими типами MIME при тестировании на сервере IMAP:
text/x-moz-message
- URL-адрес в кодировке UTF-16, который выглядит следующим образомimap-message://user@server/FOLDER#ID
text/x-moz-url
- URL-адрес в кодировке UTF-16, который выглядит следующим образомimap://user@server:port/fetch%3EUID%3E/FOLDER%3EID
text/uri-list
- ASCII (?) URL, который выглядит какimap://user@host:port/fetch%3EUID%3E/FOLDER%3EID"
_NETSCAPE_URL
- ASCII (?) URL, который выглядит какimap://user@host:port/fetch%3EUID%3E/FOLDER%3EID
application/x-moz-file-promise-url
- URL-адрес в кодировке UTF-16, который выглядит следующим образомimap://user@host:port/fetch%3EUID%3E/FOLDER%3EID?fileName=SUBJECT.eml
application/x-moz-file-promise
- Пустой
Другие советы
Соответствующий код Thunderbird является здесь, но , к сожалению, это еще не закончено...То, что я сделал, - это написал расширение Thunderbird, которое переопределяет draggesture
событие из #threadTree treechildren
и вызывает слегка измененную версию ThreadPaneOnDragStart
который записывает перетаскиваемое сообщение куда-нибудь внутри временного каталога (используя SaveMessageToDisk
), возвращая имя файла в виде application/x-moz-file-promise
(или все, что вы хотели бы получить внутри своего приложения).
У этого есть два недостатка.поскольку файл создается при начале перетаскивания, а не при его завершении:
- в конечном итоге вы можете получить бессмысленные файлы внутри временного каталога, если пользователь прервет операцию DND
- если перетаскиваемое сообщение большое, пользователь может столкнуться с некоторой задержкой