php скрипт отправки почты через smtp

Отправляем почту через SMTP

Здравствуйте, уважаемый посетитель!

Прошу извинить меня за задержку в обновлении блога. Но этому есть вполне понятное объяснение. Как-никак, лето, дача, гости, лес, вода и много другое, что не позволило мне заняться вопросами создания сайта. Но вот сейчас немного освободился, гости разъехались, и думаю, что теперь точно смогу этому уделить должное внимание.

Итак, после того, как в последней статье мы подключили почту своего домена к одному из почтовых сервисов, теперь посмотрим, как можно отправлять email с сайта. Причем так, чтобы наши письма не попадали в СПАМ, а надежно, с высокой степенью вероятности, доставлялись до наших адресатов.

Вообще, для отправки писем в PHP существует встроенная функция mail(). Но следует отметить, что несмотря на простоту такого способа (в этом случае для отправки писем достаточно указать всего одну строку кода с определенными параметрами), применение такого варианта имеет существенный недостаток, связанный с проблемой СПАМа.

Дело в том, что фильтры антиСПАМа почтовых серверов на стороне получателя не очень жалуют письма, отправленные через функцию mail(). И в большинстве случаев такие сообщения фильтруются, либо вообще удаляться, не доходя до адресата.

И для того, чтобы максимально исключить такие случаи, обычно применяют другой вариант, при котором отправка писем осуществляется, как будто это делается сторонним почтовым сервисом.

Такой способ называется отправкой почты через SMTP с авторизацией. Который мы сегодня и рассмотрим на примере отправки формы обратной связи. Причем для этого будем использовать довольно известную и популярную библиотеку PHPMailer, позволяющую достаточно просто организовать отправку писем через SMTP.

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

Перед тем, как приступить к практической работе по отправке писем обратной связи, сначала определимся, как мы это будем это делать.

Форма обратной связи предназначена для того, чтобы пользователь для связи с администратором сайта мог передать свое сообщение. Обычно, такая форма состоит из нескольких полей и кнопки «Отправить».

В принципе, для отправки email достаточно использовать всего лишь несколько полей, которые дают достаточную информацию о пользователе и содержании сообщения, такие как:

Хотя можно добавить и другие. Например, номер телефона, если, действительно, в этом есть необходимость.

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

Так как в предыдущей статье мы остановились на проверке подключения доменной почты к сервису Яндекс.Почта, то и оправлять почту будем для этого варианта. Хотя это не принципиально. Ниже будут отмечены те опции, при изменении которых можно будет отправлять email через почтовый сервер Mail.ru.

В качестве реального почтового ящика, с которого будут отправляться письма, будем использовать аккаунт вновь созданного пользователя доменной почты, скажем с адресом feedback@avtobezugona.ru. А отправлять эти письма будем на почтовый ящик администратора admin@avtobezugona.ru, который ранее мы создали в предыдущей статье.

Создаем форму обратной связи

После того, как мы определились с самим порядком отправки писем, теперь создадим форму обратной связи, с помощью которой будем это делать.

Источник

Отправка почты через SMTP с локального сервера

Отправка почты через SMTP с локального сервера позволяет протестировать отправку сообщений с сайта находящемся на локальной машине, или проще говоря, локальном сервере. Для этого можно использовать любой почтовый сервис yandex, google или mail.ru.

php скрипт отправки почты через smtp. Смотреть фото php скрипт отправки почты через smtp. Смотреть картинку php скрипт отправки почты через smtp. Картинка про php скрипт отправки почты через smtp. Фото php скрипт отправки почты через smtp

Прежде всего, SMTP (Simple Mail Transfer Protocol) — это широко используемый сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP. И такими протоколами обладают все популярные почтовые сервисы.

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

Многие такие сервера имеют уже встроенное программное обеспечение и необходимый функционал по работе с почтой, нужно его только правильно настроить.

Для проверки работоспособности такой почты необходим самый минимум:

Отправка почты php через SMTP-настройка скрипта

Шаблон простенького скрипта который можно скопировать чуть ниже, или скачать еще на сотнях подобных сайтов, необходимо отредактировать.

Для начала нужно поменять в шаблоне скрипта некоторые значения.
to — меняем на почтовый адрес куда будет отправлено почтовое сообщение.
subject — тема письма
message — само сообщение, или тело письма.

Пример моего скрипта:

Можно конечно немного расширить функционал и сделать так, чтобы скрипт выдавал сообщение об отправки почты. Хоть на самом деле отправку производит именно SMTP-сервер, а скрипт лишь формирует сообщение.

Для примера можно написать так:

Все подставленные значения должны быть в кавычках, иначе скрипт выдаст ошибку. После этого можно сохранить скрипт в папку локального сервера.

Например: domains/send/index.php и приступать к настройке отправки почты через SMTP opensrerver.

php скрипт отправки почты через smtp. Смотреть фото php скрипт отправки почты через smtp. Смотреть картинку php скрипт отправки почты через smtp. Картинка про php скрипт отправки почты через smtp. Фото php скрипт отправки почты через smtp

Отправка почты через smtp яндекса

Почта будет приходить на любой адрес, который будет указан в скрипте вместо значения ‘to’, но обрабатывать и отправлять эту почту будет именно тот SMTP, который будет указан в настройках openserver.

php скрипт отправки почты через smtp. Смотреть фото php скрипт отправки почты через smtp. Смотреть картинку php скрипт отправки почты через smtp. Картинка про php скрипт отправки почты через smtp. Фото php скрипт отправки почты через smtp

Сохраняем настройки и после того, как сервер будет перезапущен, можно обратиться к самому скрипту. Из папки «Мои сайты», открыть папку «send» в которой и находится сохраненный ранее скрипт index.php.

К стати, данный скрипт можно сохранить под любым именем, главное чтобы расширение скрипта было «php»

php скрипт отправки почты через smtp. Смотреть фото php скрипт отправки почты через smtp. Смотреть картинку php скрипт отправки почты через smtp. Картинка про php скрипт отправки почты через smtp. Фото php скрипт отправки почты через smtp

Как только произойдет обращение к данному скрипту, в новом окне браузера появится информация о том, что скрипт отработал.

php скрипт отправки почты через smtp. Смотреть фото php скрипт отправки почты через smtp. Смотреть картинку php скрипт отправки почты через smtp. Картинка про php скрипт отправки почты через smtp. Фото php скрипт отправки почты через smtp

После этого стоит проверить свой почтовый ящик, адрес которого был указан в скрипте, пришло ли письмо.

php скрипт отправки почты через smtp. Смотреть фото php скрипт отправки почты через smtp. Смотреть картинку php скрипт отправки почты через smtp. Картинка про php скрипт отправки почты через smtp. Фото php скрипт отправки почты через smtp

Если его нет, значит что-то настроено не правильно, либо письмо попало в папку спам.

Все остальные настройки выглядят аналогично, но на всякий случай дополнительная информация не помешает.

Отправка почты через smtp mail ru

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

А чтобы не перестраивать каждый раз локальные сервер, лучше всего настроить разные профили openserver. Как это сделать показано в видеоуроке Openserver настройка php с помощью профилей.

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

Для каждого профиля (совсем не важно как он будет называться), должны быть сделаны свои настройки, если конечно планируется использование разных по своим параметрам скриптов, cms-систем и приложений.
Если нет, то можно обойтись и настройками по умолчанию.

Что касается SMTP mail ru, то здесь все эдентично.

Меняются данные яндекса на данные mail ru

php скрипт отправки почты через smtp. Смотреть фото php скрипт отправки почты через smtp. Смотреть картинку php скрипт отправки почты через smtp. Картинка про php скрипт отправки почты через smtp. Фото php скрипт отправки почты через smtp

Oтправка почты через smtp google

Для того, чтобы настроить отправку почты через SMTP гугла, стоит чуть постараться.

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

php скрипт отправки почты через smtp. Смотреть фото php скрипт отправки почты через smtp. Смотреть картинку php скрипт отправки почты через smtp. Картинка про php скрипт отправки почты через smtp. Фото php скрипт отправки почты через smtp

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

Если у вас все получилось и письма дошли до указанного адресата, значит все сделано правильно. Будет здорово если вы поделитесь своими наработками в комментариях.

Источник

Отправка писем через SMTP с авторизацией на php

php скрипт отправки почты через smtp. Смотреть фото php скрипт отправки почты через smtp. Смотреть картинку php скрипт отправки почты через smtp. Картинка про php скрипт отправки почты через smtp. Фото php скрипт отправки почты через smtpВ этой статье я хочу показать как можно сделать отправку писем из php через smtp сервер на примере smtp.yandex.ru
Иногда бывает такое, что на хостинге запрещено отсылать письма стандартными средствами — mail(), такое в основном бывает на бесплатных хостингах 🙂 Так же бывает необходимость слать почту через smtp и на серверах, по ряду различных причин.

Приступим к реализации, для выполнения отправки через smtp потребуется возможность работы php с сокетами. Код получился большой и для удобства я его оформил в отдельный класс, который можно скачать тут.

Ниже пример использования класса:

Обновление 30.09.2014
В последнее время Яндекс не работает через простой сокет, только через SSL, поэтому следует использовать вот такой код для вызова класса:

Обновление 1.10.2014
Обновлен класс. Теперь корректно происходит работа с почтовым сервером mail.ru по SSL протоколу.
Так же для корректной работы с mail.ru необходимо в заголовках письма в отправителе указывать e-mail, с которого происходит отправка, например:
Если авторизация происходит через e-mail ipatovsoft@mail.ru, то заголовок должен выглядеть следующим образом:

Обновление 2.10.2014
Класс подредактирован, теперь работает и с gmail.com через протокол SSL
Пример:

Так же вы можете почитать об обновленном классе и работе через протокол ssl в новой статье: Отправка писем через SMTP с авторизацией по протоколу SSL на php.

Обновление 13.03.2018: Класс обновился, подробнее тут: Новая версия класса SendMailSmtpClass

Источник

Отправка писем через SMTP на PHP 2 способа

if (!server_parse($socket, «220», __LINE__)) return false;

Не могу отправить HELO!

‘;
fclose($socket);
return false;
>
fputs($socket, «AUTH LOGIN\r\n»);
if (!server_parse($socket, «334», __LINE__)) <
if ($config[‘smtp_debug’]) echo ‘

Не могу найти ответ на запрос авторизаци.

Логин авторизации не был принят сервером!

Пароль не был принят сервером как верный! Ошибка авторизации!

‘;
fclose($socket);
return false;
>
fputs($socket, «MAIL FROM: \r\n»);
if (!server_parse($socket, «250», __LINE__)) <
if ($config[‘smtp_debug’]) echo ‘

Не могу отправить комманду MAIL FROM:

‘;
fclose($socket);
return false;
>
fputs($socket, «RCPT TO: \r\n»);

if (!server_parse($socket, «250», __LINE__)) <
if ($config[‘smtp_debug’]) echo ‘

Не могу отправить комманду RCPT TO:

‘;
fclose($socket);
return false;
>
fputs($socket, «DATA\r\n»);

if (!server_parse($socket, «354», __LINE__)) <
if ($config[‘smtp_debug’]) echo ‘

Не могу отправить комманду DATA

if (!server_parse($socket, «250», __LINE__)) <
if ($config[‘smtp_debug’]) echo ‘

Не смог отправить тело письма. Письмо не было отправленно!

‘;
fclose($socket);
return false;
>
fputs($socket, «QUIT\r\n»);
fclose($socket);
return TRUE;
>

Проблемы с отправкой почты!

Проблемы с отправкой почты!

fputs($socket, «AUTH LOGIN\r\n»);
if (!$this->_parseServer($socket, «334»)) <
fclose($socket);
throw new Exception(‘Autorization error’);
>

fputs($socket, «MAIL FROM: «.$this->smtp_username.»\r\n»);
if (!$this->_parseServer($socket, «250»)) <
fclose($socket);
throw new Exception(‘Error of command sending: MAIL FROM’);
>

fputs($socket, «DATA\r\n»);
if (!$this->_parseServer($socket, «354»)) <
fclose($socket);
throw new Exception(‘Error of command sending: DATA’);
>

Вызываем теперь класс с параметрами

require_once «SendMailSmtpClass.php»; // подключаем класс

Материал взят частично с сайтов:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *