Как предоставить вложения электронной почты cid во встроенный браузер

Я использую встроенный веб-браузер от Bsalsa для написания почтового клиента в Delphi.

У меня проблема со встроенными вложениями cid, такими как:

<IMG src="cid:5D4219C71EAE43B1864AE9CB27C224A8@somehost">

Я храню вложения в базе данных, но не могу понять, как предоставить их браузеру. Кажется, что может потребоваться реализовать собственное прозвище, но документации мало.

Любая помощь будет оценена по достоинству.


person Daniel Maurić    schedule 18.12.2009    source источник


Ответы (2)


Я реализовал его с помощью обработчика «подключаемого протокола», и это проще, чем кажется. Начните здесь: http://msdn.microsoft.com/en-us/library/aa767916(VS.85).aspx и здесь: http://www.bsalsa.com/protocols.html

Мне жаль, что я не могу поделиться кодом, который я написал, но он написан для компании, в которой я работаю, и у меня есть ограничения по этому поводу. В основном вам нужен com-объект, который реализует надлежащий интерфейс для получения данных и позволяет элементу управления веб-браузером читать их.

Это ИМХО правильный способ сделать это - изменение почты и сохранение временных данных может привести к проблемам в долгосрочной перспективе.

person Community    schedule 18.12.2009

Самое простое решение - извлечь ваши «вложения» по запросу во временную папку, а затем изменить ссылку в источнике, чтобы она указывала на эти временные файлы, прежде чем они будут отображаться. В прошлом я использовал diHTMLParser, чтобы сделать это с большим успех.

Если я правильно помню, сообщение содержит эти вложения mime вместе с необязательным именем файла, которое не всегда существует, но будет иметь тип mime, поэтому вам может потребоваться таблица перевода, чтобы получить расширение файла по умолчанию для вложения. Кроме того, следите за файлами, которые вы помещаете во временный каталог, и очищайте их после закрытия окна сообщения. Если вы разрешите одновременное открытие нескольких сообщений, разрешите конфликты имен и создайте уникальные файлы. Подписи обычно имеют одно и то же имя, но принадлежат разным людям... Может возникнуть путаница, если ваше сообщение от Джона подписано Марией. :)

person skamradt    schedule 18.12.2009
comment
Да, это то, что я сейчас делаю, но надеялся на правильное решение. - person Daniel Maurić; 18.12.2009
comment
на мой взгляд, подход с прозвищем похож на использование кувалды, чтобы забить гвоздь в пробковое дерево. Это работает, но требует больше усилий, когда вы можете просто использовать пальцы. - person skamradt; 18.12.2009
comment
Ну, теоретически моникеры - правильное решение, гораздо меньше взлома, чем сохранение во временных файлах и т. Д., Проблема только в сложной реализации, ИМХО. - person Daniel Maurić; 18.12.2009
comment
Хорошо для вас, Даниэль (и к вашему сведению для будущих читателей), это, вероятно, для чтения электронных писем (протокол CID), и не очень хорошая практика писать электронные письма людей во временные файлы ... слишком сложно для обеспечения безопасности / конфиденциальности. Я нашел этот вопрос и ответ, потому что в настоящее время я обновляю приложение, которое делает именно это - только хотел бы, чтобы принятый ответ мог дать более подробную информацию, но понимаю, почему они не могут. - person eselk; 19.03.2014