- Кракозябрица в имени отправителя письма на почте Yandex
- С чего все начиналось
- Решение вопроса
- Поиск по сайту на основе Yandex.XML
- Урок 349 Яндекс XML: как пользоваться, что такое лимиты Yandex XML
- Как узнать свои лимиты Яндекс XML
- Как пользоваться Yandex XML
- Вывод
- Яндекс.XML
- Настройка Яндекс.XML
- Зачем нужен сервис
- Качество работы
- Лимиты Яндекс.XML
- Куда деть неизрасходованные лимиты
- Как пользоваться Яндекс.XML
Кракозябрица в имени отправителя письма на почте Yandex
Введение
Доброго времени суток, уважаемые!
Хочу кратенько поведать о проблеме отображения имени отправителя письма при отправке на ящики Яндекс.Почты и привести ее решение.
Заранее прошу маститых программистов меня простить. Возможно, для вас эта ситуация не стоит выеденного яйца.
Но мне пришлось посидеть над ее решением. Надеюсь, это может оказаться полезным кому-нибудь.
С чего все начиналось
Итак, есть самописный сайт на php + angular. Обычный лендинг с калькулятором.
Пришла очередь задаче по отправке писем клиентам и менеджерам о поступивших заказах.
Казалось бы, чего уж проще? Берешь и пишешь:
При этом сохраняем файл в кодировке UTF-8 без BOM и выполняем.
Смотрим почтовый ящик gmail — все в порядке! Имя отправителя отображается вполне себе корректно:
Смотрим Яндекс — опять красота.
Уже открываю шампанское… Вот она, победа. Но не тут-то было.
Открываю письмо и вижу:
Убираю шампанское, достаю бубны. Начинаю шерстить интернет в поисках решения, пишу в поддержку Яндекса.
Мне приходит ответ: «Попробуйте кодировать в base64». Что кодировать — я так и не понял. Пробовал кодировать кириллические символы и заголовок целиком.
Но приходит мысль: зачем изобретать велосипед? Надо посмотреть, как делают старшие товарищи по цеху. Открываю первое письмо и смотрю его свойства. Что же я там вижу?
Логика подсказывает, что заветное решение находится внутри символов «=?… ?=» (да простится мне серость моя сообществом мудрейших!).
Смотрю дальше и вижу кодировку windows-1251. Так, еще один шаг к успеху! Подвигаю шампанское ближе.
Затем идет еще символ «B» и знак вопроса. Отбрасываю их, беру оставшийся код и смотрю, что же это такое?
Так, у меня файл с кодировкой utf-8. Сохраняю его как windows-1251 и запускаю снова.
Решение вопроса
Для файлов в кодировке utf-8 я использовал такое решение:
Обратите внимание — тема письма также закодирована:
В результате я получил корректное отображение отправителя письма:
Прошу не судить строго за мой первый литературно-технический очерк. Буду благодарен профессиональным отзывам и дополнением материала.
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
- 17 января 2021 в 21:55 Как найти email пользователя GitHub и написать Telegram бота для решения этой задачи?
- 15 февраля 2021 в 01:06 Еще одна реализация DI на PHP
- 6 апреля 2021 в 15:40 Собеседование на PHP разработчика. Более 100 вопросов для Junior, Middle и Senior
- 10 апреля 2021 в 00:24 Простое решение для раздачи файлового архива через временные WEB-ссылки
- 15 апреля 2021 в 13:08 Как я 30 дней авто обновление валюты чинил Opencart 3.0
Это «Песочница» — раздел, в который попадают дебютные посты пользователей, желающих стать полноправными участниками сообщества.
Если у вас есть приглашение, отправьте его автору понравившейся публикации — тогда её смогут прочитать и обсудить все остальные пользователи Хабра.
Чтобы исключить предвзятость при оценке, все публикации анонимны, псевдонимы показываются случайным образом.
Не надо пропускать:
- рекламные и PR-публикации
- вопросы и просьбы (для них есть Хабр Q&A);
- вакансии (используйте Хабр Карьеру)
- статьи, ранее опубликованные на других сайтах;
- статьи без правильно расставленных знаков препинания, со смайликами, с обилием восклицательных знаков, неоправданным выделением слов и предложений и другим неуместным форматированием текста;
- жалобы на компании и предоставляемые услуги;
- низкокачественные переводы;
- куски программного кода без пояснений;
- односложные статьи;
- статьи, слабо относящиеся к или не относящиеся к ней вовсе.
Поиск по сайту на основе Yandex.XML
Почему-то вебмастера ленятся сделать нормальный поиск по своему сайту. Особенно это касается высокопосещаемых сайтов, где качественный поиск был бы очень удобен для рядового пользователя.
Чаще всего прибегают к готовому решению от Google, с помощью которого можно еще и подзаработать на контекстной рекламе. Но для рунета я бы посоветовал сделать поиск при помощи сервиса Yandex.XML, потому что такой поиск больше адаптирован под морфологию русского языка. К тому же вы можете получить шанс получить самые жирные биды для контекста, если будете использовать поисковый директ.
В этом посте я хочу подробно показать вам, что подобный поиск организовать совсем не сложно. Это займет всего несколько минут и выльется в десяток строк на PHP.
Шаг 1: Регистрация IP на сервисе яндекс
Для начала идем на http://xml.yandex.ru/ и регистриуем свой IP:
Шаг 2: Читаем маны
На сервисе довольно запутанная навигациия, поэтому я сразу даю ссылку на документацию по поисковому запросу
Шаг 3: Пишем программу на PHP
Далее привожу часть своей программы, из которой станет понятно как создать аналогичный модуль для своего сайта.
Получаем строку для поиска методом GET или POST
Я прогоняю эту переменную через регулярку, дабы всякие шалуны не вздумали пихать туда что попало, такс, на всякий пожарный.
$q = preg_replace(«/[^а-яА-Я\d\w\s]/iu», «», $q);
Сервер XML-поиска Яндекса принимает поисковые запросы из входного потока методом POST (в формате XML). Также запросы принимаются методом GET по адресу xmlsearch.yandex.ru/xmlsearch Я не стал особо мудрить и решил использовать метод GET. $page — это номер страницы, начиная с 0, а yousite.ru — ваш сайт, по которому будет вестись поиск.
$ya_query = «http://xmlsearch.yandex.ru/xmlsearch» . «/?page=» . $page . «&query=» . urlencode($q . «
Отправляем GET запрос в яшу:
Дальше я удалил из XML файла часть поискового запроса ( $xml_data = str_replace(«& lt ;& lt ; host=& quot ;yoursite.ru& quot ;», «», $xml_data);
(не забудьте убрать пробелы)
XML ответ у нас теперь есть. Теперь возьмем шаблон XSL для того, чтобы вставить туда наши данные. Различные шаблоны можно найти на самом сервисе яндексе.xml, а здесь я дам ссылку на свой шаблон, который вам придется заточить под себя. Кажется я и сам нашел его где-то на просторах интернета, потому в нем будет довольно много «мусора».
Я надеюсь, что вы интуитивно в нем все-таки разберетесь. Впринципе, все довольно просто.
Загружаем наш XSL шаблон, у меня это делает smarty, а у вас, допустим будет вот так:
$handle = fopen($filename, «r»);
$xsl_data = fread($handle, filesize($filename));
fclose($handle);
Ну вот и все, остается только воспользоваться мощью PHP5 и соединить все это воедино:
$xh = new xsltprocessor();
$xml = new DOMDocument();
$xsl = new DOMDocument();
$xh->importStyleSheet($xsl);
$search_result = $xh->transformToXML($xml);
Ну, и еще я поменял кодировку на utf-8:
$search_result = iconv(«windows-1251», «utf-8», $search_result);
Распечатываем наш результат:
Вот и вся наука. Пример реализации можно посмотреть у меня на блоге. Как видите прикрутить поиск по сайту на основе Yandex.XML не так уж и сложно!
Я не считаю себя гуру программирования, возможно я упустил какие-то детали, или какие-то места выглядят не очень красиво с точки зрения программиста. Укажите, пожалуйста, мне на мои недочеты, буду очень признателен.
Урок 349 Яндекс XML: как пользоваться, что такое лимиты Yandex XML
Привет! Большинство из вас, возможно, уже слышало про так называемый Яндекс XML. Я тоже, если честно, давно слышал про него, но никак практически не использовал в своей работе. Для тех, кто не в курсе, в двух словах расскажу, что такое лимиты Яндекс XML и как пользоваться ими.
Яндекс XML – это официальный сервис от Яндекса, к которому можно отправлять запросы и получать данные в формате XML. Допустим, Вы хотите узнать, на каком месте находится ваш сайт по запросу “ключевое слово” в Яндексе. Обычно сервисы или программы для этого парсят поисковую выдачу, то есть обрабатывают первую страницу выдачи, вторую и далее. А здесь же Яндекс сам официально делится подобной информацией. Запросы через Yandex XML передаются намного шустрее.
Подобный функционал предотвращает “выскакивание” разных “капчей” и прочих блокировок со стороны поисковика. Но есть одно но. Есть лимиты.
Лимиты Яндекс XML:
Честно, я пытался найти хоть какую-то очевидную связь между сайтами на количество лимитов, не получилось. Тут формула сложения нескольких показателей, а не только посещаемости, тИЦа, страниц в индексе и прочего.
Как узнать свои лимиты Яндекс XML
- Для начала вам нужно зайти сюда https://xml.yandex.ru/.
- Перейти во вкладку “Лимиты”:
- Там вы увидите количество использованных лимитов и сколько их всего:
- Внизу этой же страницы Вы можете увидите сколько лимитов дает каждый сайт:
- Так как я работаю с клиентскими сайтами, у меня эти лимитов несколько тысяч. Повторюсь, если вам дадут права в Яндекс Вебмастере, Вам также перейдут лимиты сайта. Клиенты все равно не используют эти лимиты, а я их использую во благо их сайтов же. И в то же время никакого вреда не приносит подобная передача лимитов и в любое время их можно “забрать” обратно.
- Там же на этой странице внизу вы можете увидеть сколько лимитов вы имеете в тот или иной промежуток времени.
Небольшая особенность: есть сервисы, которые позволяют купить/продать Яндекс XML лимиты. 1000 лимитов можно передать в районе 100 рублей в месяц, по-моему. Я подобными вещами не занимаюсь, поэтому ничего посоветовать не могу.
Как пользоваться Yandex XML
Свои лимиты Яндекс XML я использую во всеми любимом Key Collector. Еще для съема позиций я использую программу SERP Parser, но пока, к сожалению, туда не прикрутили возможность использования Yandex XML, разработчики обещали это исправить в самое ближайшее время.
Для того, чтобы использовать Яндекс XML в Key Collector вам нужно:
- В личном кабинете Yandex XML зайти в настройки:
- В поле “Основной IP-адрес” вставить ваш IP, его можно скопировать чуть ниже там же:
- Поставить галочку “Я принимаю условия “Лицензионного соглашения”” и нажать на кнопку “Сохранить”:
- Скопировать ссылку, которая дается в самом верху “URL для запросов”:
- Открыть настройки Key Collector, перейти во вкладку “Поисковая выдача”:
- Там поставить галочку “Использовать Yandex XML”, чуть ниже вставить скопированную ссылку, количество потоков я ставлю 1:
- Дальше для проверки можете снять позиции по паре запросов в Кей Коллекторе и снова вернутся в личный кабинет Yandex XML, там вы уже видите что-то подобное (пару минут придется подождать до обновления):
- Вот и все. Лимиты используются корректно. Не забывайте, что в определенные часы лимитов существенно меньше.
Вывод
Хорошая задумка от Яндекса, пусть и уже довольно старая (это я такой тормознутый 🙂 ), но Гуглу тоже не помешало бы что-то подобное. Все равно все парсят реальную выдачу, создавая нагрузку на Яндекс, так хоть эта нагрузка немного уменьшается.
Очень много SEO-программ уже внедрило или продолжает внедрять функционал использования Яндекс XML. Если у вас лимитов достаточно, то упрощайте себе жизнь в подобных программах, скорость работы увеличится в разы, да и пару долларов сэкономите на “капчах”. 🙂
А вы используете в своей работе Yandex XML?
Яндекс.XML
Яндекс.XML – сервис, который дает возможность отправлять запросы к поисковой системе «Яндекс» и получать ответы в формате XML. Им пользуются в процессе оптимизации сайта для организации поиска информации в пределах сетевого ресурса, создания специальных программ (например, для определения позиций сайта по ключевым запросам, анализа поисковой выдачи).
Если вы решили заняться поисковым продвижением сайта и вам потребовались данные в формате XML, то нужно посетить страницу с сервисами Яндекса, найти сервис под названием XML и перейти по ссылке. Яндекс попросит авторизоваться или пройти регистрацию. После выполнения просьбы вы получите доступ ко всем возможностям сервиса XML.
Настройка Яндекс.XML
Сервис предлагает изменить несколько параметров:
- основной IP-адрес. Вводим сетевой адрес, с которого сервис будет отправлять запросы;
- тип поиска. Пользователю доступна русская, турецкая и мировая система поиска;
- язык уведомлений. Можно получать информацию на разных языках;
- адрес почты. Укажите адрес почтового ящика в поле «Уведомление на почту»;
- дополнительные настройки. Установите галочки напротив дополнительной информации, которая должна быть включена в результат работы сервиса.
Под заголовком «URL для запросов» есть ссылка, в которой указано имя пользователя, введенное при авторизации, и ключ, автоматически сгенерированный системой.
Зачем нужен сервис
В процессе продвижения сайта специалист анализирует множество данных, полученных из разных источников. SEO-продвижение требует изучения сетевых ресурсов конкурентов, результатов выдачи по множеству ключевых запросов, особенностей поведения посетителей и прочей информации. Яндекс.XML – инструмент, который поможет быстрее и качественнее выполнить такие задачи.
Качество работы
Выдача в формате XML может существенно отличаться от реальных результатов, которые показывает поисковая система при выполнении поиска обычным способом. При работе с большими объемами данных расхождения заметны несильно. Если вам требуется качество, то лучше использовать обычный метод. Если вы нуждаетесь в простой и быстрой проверке, то используйте XML-лимиты.
Лимиты Яндекс.XML
Преимуществом сервиса является использование лимитов вместо традиционной капчи. Лимиты сервиса – это ограничение на количество запросов пользователя. После добавления сайта в систему происходит автоматическое выделение лимита. Его размер зависит от показателя качества ресурса, который был определен «Яндексом» после анализа содержимого. Продвижением в интернете могут заниматься несколько человек. В этом случае следует знать, что после подтверждения прав на один сайт несколькими пользователями лимит получает только первый из них. Чтобы узнать, сколько лимитов начислил сервис, перейдите в раздел «Лимиты». Там можно увидеть как общее количество доступных запросов, так и сумму лимитов по каждому подтвержденному сайту.
Один лимит позволяет сделать одно обращение к поисковой системе. Используют лимиты в процессе СЕО-продвижения сайтов для решения следующих задач:
- определения позиций сетевого ресурса в поисковой выдаче по ключам и регионам;
- получения параметров сайта, например количества проиндексированных ссылок, страниц;
- поиска сайтов-конкурентов для дальнейшего продвижения.
Лимиты введены из-за высокой активности веб-мастеров. Яндекс ввел два варианта ограничений: суточный и повременный. Суточный лимит зависит от количества продвигаемых сайтов и их авторитетности в системе. Он автоматически восстанавливается на следующий день после использования выделенного количества обращений к сервису. Повременный лимит зависит от текущей нагрузки на сервер. Веб-мастер может посмотреть, в какие часы, какое количество обращений ему доступно. На специальном графике лимиты отображены по часам. Его можно найти в разделе «Лимиты». Если вы не израсходовали лимиты, их можно продать.
Куда деть неизрасходованные лимиты
Если вы продвигаете несколько сайтов, постоянно следите за позициями в поисковой выдаче и другими показателями сетевого ресурса, то лимитов может даже не хватать. Но если вас особо не интересует этот сервис, то лимиты остаются невостребованными. В первом случае рождается спрос, а во втором предложение. Поэтому создатели сервиса предусмотрели возможность передачи лимитов другому пользователю.
Веб-мастеры с невостребованными лимитами могут продать их. Доход зависит от количества начисляемых лимитов. Чем крупнее и популярнее площадка, тем выше прибыль с продажи. Заработать на этом вряд ли получится, но на оплату хостинга или домена полученной суммы может хватить.
Покупают лимиты владельцы крупных тематических проектов. В процессе развития таких сайтов требуется большое количество доступных обращений для проверки позиций по множеству ключевых запросов. Обычно из-за суточных ограничений лимитов катастрофически не хватает. Поэтому веб-мастеры идут на специальные биржи и покупают их. О продаже лимитов можно договориться напрямую без участия посредника и уплаты комиссионного сбора. Однако в этом случае присутствует риск передачи денег мошеннику. Поэтому чаще всего пользуются услугами специализированных сервисов.
Как пользоваться Яндекс.XML
Чтобы стало понятно, как пользоваться Яндекс.XML, создадим простой парсер поисковой выдачи «Яндекса». Для этого нам потребуется библиотека PHP Simple HTML DOM Parser и знания основ языка PHP. Для размещения файлов необходим хостинг и домен.
Регистрация и настройка. Зарегистрируйтесь в сервисе Яндекс.XML и войдите в систему управления. Откроется страница с настройками. Вводим основной IP-адрес, с которого будут отправляться запросы, выбираем русский тип поиска и ставим галочку, сообщающую сервису о принятии пользователем лицензионного соглашения. После этого нажимаем на кнопку «Сохранить».
Выполняем тестовый запрос. В одноименном разделе пользователь может сформировать тестовый запрос с нужными параметрами и получить результат его выполнения.
Запрос состоит из следующих элементов:
- адреса сервиса (https://yandex.ru/search/xml);
- логина пользователя (user=Login);
- API-ключа (key=Api-key);
- поискового запроса (query=Test);
- страны, региона (lr=***).
Запрос выглядит так: https://yandex.ru/search/xml?user=Login&key=Api-key&query=Test&lr=***. Его можно вставить в адресную строку браузера и получить результат работы поисковой системы.
Создаем страницу. На хостинге создаем файл yandex.php. Используя разметку HTML, формируем страницу с формой, состоящей из двух полей и кнопки. Первое поле предназначено для ввода поисковой фразы, а второе для выбора региона. Пример кода указан на фото ниже.
Подключение. На хостинге также следует сохранить файл парсера и создать еще один файл yandex-result.php, в котором нужно прописать код, указанный на картинке ниже. Вы можете просто скопировать предложенный код в текстовый файл и сохранить его с расширением HTML.
В одной папке на хостинге у вас должны быть файлы:
- yandex.php;
- simple_html_dom.php;
- yandex-result.php.
В адресную строку браузера вбиваем адрес файла yandex.php и открываем его. Должна появиться форма с двумя полями и кнопкой. В верхнее поле вводим поисковую фразу, во втором выбираем регион и нажимаем кнопку «Отправить». В окне браузера отобразится результат работы скрипта в формате XML.
На странице с текстом можно найти:
- ссылку на сайт, которая находится в тегах и ;
- заголовок скрипта, расположенный между тегами и ;
- описание приложения в тегах
;