SMTP сервер для отправки писем с сайта если функция mail не работает

9 апреля 2016 Антон Кулешов 2026 0

Довольно распространенное явление на просторах бесплатных хостингов – когда не работает функция mail() или работает как-то странно. Что же делать в этом случае? Ответ простой - воспользоваться отправкой писем через SMTP протокол, но для этого нам нужен уже готовый и написанный код. Совсем недавно подключая доменную почту на falbar, я сделал «маленькую выжимку из поисковой выдачи» и не найдя подходящего решения написал собственный класс, который, я думаю, будет полезен не только мне.

Реклама

Весь код я оформил в отдельный файл, который будет удобно подключать к своим проектам. Его можно скачать как на этой станице, так и на github. Основные моменты, которые мне не понравились в готовых решениях - это неудобный вызов и отлов ошибок, что я и постарался исправить.

Ниже я напишу пример использования класса для почты Яндекс, и, первым делом, подключим его:

require_once("Smtp.php");

Далее создаем объект, передав настройки в конструктор Smtp класса:

$obj = new Smtp(array(
	"maillogin" => "noreply@falbar.ru",
	"mailpass"  => "*********",
	"from"      => "Фалбар",
	"host"      => "ssl://smtp.yandex.ru",
	"port"      => 465
));

Это не все параметры, которые можно указать, вот ещё парочку:

  • charset – тут указываем кодировку (по умолчанию utf-8);
  • rpvalid[mail] – регулярное выражение для проверки почты.

Возможно, в будущем я добавлю ещё что-нибудь, но пока для моей задумки этого хватило. Если вывести переменную $obj при помощи var_dump(), то можно увидеть такую картину:

esli-vyvesti-peremennuyu-obj-smtp

Я выделил публичное свойство error, которое отвечает за отслеживание ошибок. Собственно, это массив, в котором изначально есть только одна ячейка со статусом выполнения скрипта. Если в ней значение false, то всё отработало замечательно. В противном случае, когда в ней значение true в массив добавляются ещё три ячейки: message, file, line. К примеру, если мы укажем в передаваемых настройках неверный пароль от почты, то увидим следующие:

publichnoe-svojstvo-error-smtp

С отслеживанием ошибок, я думаю, понятно, теперь пришло время отправить письмо на почту – это делается таким образом:

$result = $obj->send(
	"akbsit@yandex.ru",
	"Заголовок письма",
	"Текст письма"
);

Метод send() принимает всего три параметра, как показано в коде выше. При этом обязательным является всего один – это указание почты, на которую происходит отправка письма. Если заголовок и текст не указаны, то по умолчанию принимается пустая строка. После того, как будет вызван метод, на почте появится письмо:

pismo-na-yandeks-pochte-smtp

При присмотре других решений часто натыкался на, так называемые, «кракозябры» в имени отправителя, если оно на русском. Это было связано с тем, что в них не указывали кодировку в заголовках. Как видно со скрина выше, в моём случае все выводится нормально. Для теста я также хочу продемонстрировать отправку писем на mail и gmail:

pismo-na-majl-pochte-smtp pismo-na-gmail-pochte-smtp

Вот так можно отправлять письма при помощи этого класса. Для того чтобы отправлять письма через SMTP сервер Яндекса, Майла и Gmail нам нужно знать два параметра: адрес почтового сервера и порт. Для почтовых программ Яндекс я уже указал в примере, но со временем всё может поменяться, поэтому далее я укажу, где их можно найти.

Для Яндекс – исходящая почта:

smtp-server-dlya-yandeks

Для Майл – исходящая почта:

smtp-server-dlya-majl

Для Gmail – исходящая почта:

smtp-server-dlya-gmail
Реклама
Комментариев еще не оставлено
no_avatar
Читайте далее

Реализуем всплывающие сообщения без использования JavaScript

25 июля 2015 Антон Кулешов

Лучший способ проинформировать посетителя вашего сайта об каких-то важных новостях или изменений это добавить блок с уведомлением, который можно будет при надобности спрятать. Сегодня мы рассмотрим один из примеров реализации данного функционала, не прибегая к JavaScript, а лишь воспользовавшись HTML и CSS3.

Прогон по каталогам – мифы и реальность

12 июня 2015 ti1schweiger

Добавить сайт в Яндекс Каталог – цель любого веб-мастера. Для молодого начинающего блогера – это признание его заслуг, для матерого продвиженца – рутинная часть работы, потому как, серьёзно продвигаемый проект просто обязан попасть в Яндекс Каталог, если вы вбухали солидную сумму в SEO, то подобную опцию можно потребовать как подтверждение проделанной работы. Что же нам дает попадание нашего сайта в Яндекс Каталог и стоит ли игра свеч? Давайте разберемся.

22 эффекта для кнопок

7 февраля 2016 Антон Кулешов

Тенденция делать всё максимально динамичным и ярким - это реалии сегодняшних дней. Каждый элемент дизайна сайта вскоре не будет оставлен без внимания. Сегодня мы поговорим об невероятно интересном и красивом наборе эффектов для кнопок. Думаю мало кто задумывается об эффектах при нажатии, но если создаёшь, к примеру, продающую страницу, то на решение потенциального покупателя может повлиять как размер кнопки, так и цвет, и даже сам эффект при клике.