Перетаскивание из Thunderbird - PullRequest
14 голосов
/ 12 июня 2009

Кто-нибудь когда-нибудь занимался перетаскиванием писем из thunderbird? любые ссылки ссылки код?

Я хочу иметь возможность перетаскивать электронные письма из Thunderbird в свое приложение?

Ответы [ 2 ]

11 голосов
/ 22 июня 2010

Похоже, это невозможно. Хотя мне кажется, что я не могу найти никакой реальной документации, вот что мои эксперименты обнаружили до сих пор.

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 - URL ASCII (?), Который выглядит как imap://user@host:port/fetch%3EUID%3E/FOLDER%3EID"
  • _NETSCAPE_URL - URL ASCII (?), Который выглядит как 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 - Пусто
4 голосов
/ 24 октября 2012

Соответствующий код Thunderbird здесь , но AFAICS это еще не закончено ... То, что я сделал, - писал расширение Thunderbird, которое переопределяет событие draggesture #threadTree treechildren и вызывает слегка измененную версию из ThreadPaneOnDragStart, который записывает перетаскиваемое сообщение где-то внутри временного каталога (используя SaveMessageToDisk), возвращая имя файла как application/x-moz-file-promise (или то, что вы хотите перехватить в вашем приложении).

Это имеет два недостатка. поскольку файл создается при начале перетаскивания, а не когда он заканчивается:

  1. вы можете получить бессмысленные файлы внутри временного каталога, если пользователь прервет операцию DND
  2. если перетаскиваемое сообщение имеет большой размер, пользователь может испытывать некоторое отставание
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...