mailto: URL Q (Mac)

А вот, я извиняюсь, вопрос.

Допустим, я хочу юзеру дать готовую ссылку в которую он кликает и получает в почтовой программе готовое к отсылке письмо.

Ну как-то так

<a href="mailto:bla@bla.com?subject=my%20subject&body=message%20body">Click here to open your mailer</a>
Все, типа, работает. Проверял на Windows+Thunderbird и на Маке с Mail.

В деталях все хуже. Конкретно, на маке.

У меня Qt 4.8 (а не браузер), раскопки показали, что все фигачится в результате в LSOpenCFURLRef().

Так вот, если в body письма больше одной строчки, то переводы строк эскейпить не надо, если поэскейпить, то письмо будет одной строкой, содержащей %0D%0A. Ну ладно, формируем URL прямо с переводами строк.

Главная беда наступает, если в текст письма нужно положить URL со своими & Если поэскейпить, то в тексте письма так и будет %26. Если не экскейпить, то на первом же & начнется, естественно, следующий аргумент.

Два вопроса

  1. Ну и кто они после этого?
  2. И что делать то? Не, мне несложно подпереть это дело мимо Qt (благо там есть возможность посадить свой handler на отдельную scheme), но как?

P.S. Проверял на 10.8, на 10.6 - вроде бы то же самое, другие не проверял.

Comments

Закодировать свои аргументы в своём URL иначе, например в base64. Раскодировать на стороне сервера.

Ну блин да, можно.

юзать tinyurl

В Виндовом мире отправлять письмо из программы было принято в конце 90-х.
Сейчас как-то совсем не принято. Я когда такое вижу меня перекашивает.

Принято открывать Contact Us страничку своего сайта с заполнеными полями.

Да не вопрос. Так и делаем.

Но есть примерно ~1% аудитории, которому нужен альтернативный способ.

В общем случае сайт может быть закрыт корпоративным firewall.
Вдруг юзер не краш-репорт зааплодит, а корпоративную тайну.

> В общем случае сайт может быть закрыт корпоративным firewall.

А тогда откуда у юзера вообще взялась программа? Он её телепатически излучил на HDD?

Ну какая разница - купили и раздали с корпоративной файлопомойки; сам скачал год-другой назад, до очередного закручивания гаек.

нынче десктопы (в кач-ве рабочих мест) уходят в прошлое - все пороговно поголовно пересели на лаптопы... это обстоятельство фактически изымает из практики LAN в её привычном понимании (т.е. как компактное пространство).

1 Они - разработчики Qt?
2 Есть системные функции по эскейпингу урлов, которые работают нормально https://developer.apple.com/library/mac/documentation/CoreFOundation/Ref...

А какой юзкейс?

Если надо просто отправить информацию, скажем, о крэшдампе, ну или что-то еще служебное, понимание чего отправителю не требуется - ну так действительно, загнать это все base64 for url.

не о крашдампе.
Ну да, можно, но тогда парсилку менять надо