Знаете ли вы, что в ссылке типа mailto:somebody@mailserver.ru можно передавать параметры? А в то время, когда аудитория ваших сайтов все чаще использует мобильные устройства, пользователи делятся ссылками не только в социальных сетях, но еще и по почте, пренебрежение вебмастерами параметров mailto считаю вообще признаком дурного тона. О том, как упростить вашим посетителям жизнь и сэкономить им драгоценную минуту жизни, я поделюсь в этой статье.
Параметров mailto немного, но есть свои нюансы при их использовании. Начну с перечня параметров:
- subject
- тема письма
- body
- текст письма
- cc
- копия
- bcc
- скрытая копия
Простой пример: я хочу передать в ссылке mailto следующие параметры:
- subject — Статья про параметры mailto
- body — Параметры mailto — как правильно использовать?\nhttp://vedernikoff.ru/параметры-mailto/\nАвторский блог Vedernikoff.ru
- cc — info@vedernikoff.ru
Затем я посмотрю, как это воспримут разные платформы и приложения. «\n» в параметре body — это спецсимвол переноса строки. Параметры перечисляются аналогично параметрам GET в URL-адресе. Email получателя в атрибуте href тега a можно не указывать. Еще важное замечание: в примере я использую параметр cc — копия, но в реальной жизни ни копию, ни скрытую копию использовать не буду. Зачем лишний раз напрягать пользователя и требовать его слать письма от своего имени на неизвестные ему адреса?
1 2 3 |
<a href="mailto:?subject=Статья про параметры mailto&body=Параметры mailto - как правильно использовать?\nhttp://vedernikoff.ru/параметры-mailto/\nАвторский блог Vedernikoff.ru&cc=info@vedernikoff.ru">Отправить по почте</a> |
Вроде бы все? А вот и нет. Проверив, что получилось: отправить по почте, мы убедимся, что такую ссылку поймут разве что почтовые клиенты типа Outlook, да и то поймут не до конца.
Вот так воспринял данную ссылку мой Outlook (рис.1)
Все ничего, но куда-то пропали переносы строк.
При работе с мобильного устройства все выглядит более печально. Клиент Яндекс.Почта на андроиде вообще отказался распознавать мое творчество, встроенный клиент и GMail показали те же результаты, что и Outlook на компьютере (рис.2):
Для того, чтобы все параметры передавались корректно, их надо «подать» в правильном формате. Во-первых — чтобы программа могла отличить параметры от их значений (в значениях могут встретиться символы & и ?, что окончательно все нам поломает), во-вторых чтобы корректно воспринимались символы, отличные от цифр, символов -_. и от латинских букв.
Кодирование параметров mailto средствами PHP
В PHP для этого есть функция rawurlencode (php.net/manual/ru/function.rawurlencode.php). Процитирую описание:
Возвращает строку, в которой все не цифробуквенные символы, кроме -_. должны быть заменены знаком процента (%), за которым следует два шестнадцатеричных числа. Это кодирование, описанное в » RFC 3986, служит для защиты буквенных символов от интерпретации в качестве специальных разграничителей URL и защищает URL от искажения при передаче символов с последующей конвертацией (как в некоторых почтовых системах).
Как это выглядит в коде:
1 2 3 4 5 6 7 8 9 |
<?php $subject = rawurlencode("Статья про параметры mailto"); $body = rawurlencode("http://vedernikoff.ru/параметры-mailto/ - как правильно использовать?\nАвторский блог Vedernikoff.ru"); $cc = rawurlencode("info@vedernikoff.ru"); $link = "<a href='mailto:?subject={$subject}&body={$body}&cc={$cc}'>Отправить по почте</a>"; echo $link; ?> |
В результате мы получим «трехэтажную» ссылку, но зато она придется по нраву почтовым клиентам.
Ссылка из примера после обработки rawurlencode:
1 2 3 |
<a href='mailto:?subject=%D0%A1%D1%82%D0%B0%D1%82%D1%8C%D1%8F%20%D0%BF%D1%80%D0%BE%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B%20mailto&body=http%3A%2F%2Fvedernikoff.ru%2F%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B-mailto%2F%20-%20%D0%BA%D0%B0%D0%BA%20%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%3F%0A%D0%90%D0%B2%D1%82%D0%BE%D1%80%D1%81%D0%BA%D0%B8%D0%B9%20%D0%B1%D0%BB%D0%BE%D0%B3%20Vedernikoff.ru&cc=info%40vedernikoff.ru'>Отправить по почте</a> |
Проверим результат: Отправить по почте
Мобильные приложения:
Как вы можете убедиться, в таком виде все прекрасно работает.
И напоследок совет: не стоит пихать в параметры html-тэги. Ссылки тоже указывайте в виде текста: какие-то почтовые клиенты сами их подсветят, какие-то — нет. Но это не беда.
Реклама: