Отправка писем через smtp с авторизацией. Отправка письма из PHP используя SMTP (c вложением)
Давно искал решение, чтобы отправлять письма пользователям не через функцию mail() в PHP, а через SMTP почтовых серверов. В интернете информации разнообразной не так много, а то что есть — работает не совсем так, либо вообще не работает. Поэтому я собрал все во едино и написал свой код, основываясь на уже готовые, которые представлены на сайтах.
Почему отправка через SMTP а не mail()
У меня ответ довольно простой — какое-то время через мой сервер вирусяки отправляли тонны писем, что привело в БАНу моего IP-адреса у многих почтовиков, в частности у gmail.com, а в связи с этим пользователи могли получать письма, поэтому пришлось искать альтернативу, и я ее нашел — это SMTP
Возможно, вас заинтересует, чем же мой скрипт лучше других, которые валяются на просторах?! Отвечу
- Он работает с почтой yandex, rambler, mail (gmail победить не смог)
- Понятный код. Чтобы его настроить достаточно поменять несколько строчек
- Отправляет письма в HTML формате
Вот достоинства моего скрипта, коих я не нашел каком-либо в интернете, но из каждого я взял все необходимо. И так, давайте рассмотрим код.
Function smtpmail($mail_to, $subject, $message, $service="yandex") { $config["smtp_charset"] = "windows-1251"; //кодировка сообщений. (или UTF-8, итд) $config["smtp_from"] = "mashintop.ru"; //Ваше имя - или имя Вашего сайта. Будет показывать при прочтении в поле "От кого" $config["smtp_debug"] = false; //Если Вы хотите видеть сообщения ошибок, укажите true вместо false $config["smtp_port"] = "25"; // Порт работы. Не меняйте, если не уверены. if($service=="yandex") { $config["smtp_searcher"] = "yandex.ru"; $config["smtp_email"] = "[email protected]"; $config["smtp_username"] = "mashintop"; //Смените на имя своего почтового ящика. $config["smtp_host"] = "smtp.yandex.ru"; //сервер для отправки почты $config["smtp_password"] = "moi_parol"; //Измените пароль } elseif($service=="rambler") { $config["smtp_searcher"] = "rambler.ru"; $config["smtp_email"] = "[email protected]"; $config["smtp_username"] = "mashintop"; //Смените на имя своего почтового ящика. $config["smtp_host"] = "smtp.rambler.ru"; //сервер для отправки почты $config["smtp_password"] = "moi_parol"; //Измените пароль } elseif($service=="mail") { $config["smtp_searcher"] = "mail.ru"; $config["smtp_email"] = "[email protected]"; $config["smtp_username"] = "mashintop"; //Смените на имя своего почтового ящика. $config["smtp_host"] = "smtp.mail.ru"; //сервер для отправки почты $config["smtp_password"] = "moi_parol"; //Измените пароль } elseif($service=="gmail") { $config["smtp_searcher"] = "gmail.com"; $config["smtp_email"] = "[email protected]"; $config["smtp_username"] = "alexeybertram"; //Смените на имя своего почтового ящика. $config["smtp_host"] = "smtp.gmail.com"; //сервер для отправки почты $config["smtp_password"] = "moi_parol"; //Измените пароль } $header="Date: ".date("D, j M Y G:i:s")." +0700rn"; $header.="From: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode("".$config["smtp_from"]."")))."?= <".$config["smtp_email"].">rn"; $header.="X-Mailer: The Bat! (v3.99.3) Professionalrn"; $header.="Reply-To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode("".$config["smtp_from"]."")))."?= <".$config["smtp_email"].">rn"; $header.="X-Priority: 3 (Normal)rn"; $header.="Message-ID: <172562218.".date("YmjHis")."@".$config["smtp_searcher"].">rn"; $header.="To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode("")))."?= <$mail_to>rn"; $header.="Subject: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode("".$subject."")))."?=rn"; $header.="MIME-Version: 1.0rn"; $header.="Content-Type: text/html; charset=windows-1251rn"; $header.="Content-Transfer-Encoding: 8bitrn"; $smtp_conn = fsockopen("".$config["smtp_host"]."", $config["smtp_port"],$errno, $errstr, 10); if(!$smtp_conn) {print "соединение с серверов не прошло"; fclose($smtp_conn); exit;} $data = get_data($smtp_conn); fputs($smtp_conn,"EHLO ".$config["smtp_searcher"]."rn"); $code = substr(get_data($smtp_conn),0,3000); if($code != 250) {print "ошибка приветсвия EHLO"; fclose($smtp_conn); exit;} fputs($smtp_conn,"AUTH LOGINrn"); $code = substr(get_data($smtp_conn),0,3000); if($code != 334) {print "сервер не разрешил начать авторизацию"; fclose($smtp_conn); exit;} fputs($smtp_conn,base64_encode("".$config["smtp_username"]."")."rn"); $code = substr(get_data($smtp_conn),0,3000); if($code != 334) {print "ошибка доступа к такому юзеру"; fclose($smtp_conn); exit;} fputs($smtp_conn,base64_encode("".$config["smtp_password"]."")."rn"); $code = substr(get_data($smtp_conn),0,3000); if($code != 235) {print "не правильный пароль"; fclose($smtp_conn); exit;} fputs($smtp_conn,"MAIL FROM:".$config["smtp_email"]."rn"); $code = substr(get_data($smtp_conn),0,3000); if($code != 250) {print "сервер отказал в команде MAIL FROM"; fclose($smtp_conn); exit;} fputs($smtp_conn,"RCPT TO:".$mail_to."rn"); $code = substr(get_data($smtp_conn),0,3000); if($code != 250 AND $code != 251) {print "Сервер не принял команду RCPT TO"; fclose($smtp_conn); exit;} fputs($smtp_conn,"DATArn"); $code = substr(get_data($smtp_conn),0,3000); if($code != 354) {print "сервер не принял DATA"; fclose($smtp_conn); exit;} fputs($smtp_conn,$header."rn".$message."rn.rn"); $code = substr(get_data($smtp_conn),0,3000); if($code != 250) {print "ошибка отправки письма"; fclose($smtp_conn); exit;} fputs($smtp_conn,"QUITrn"); fclose($smtp_conn); } function get_data($smtp_conn) { $data=""; while($str = fgets($smtp_conn,515)) { $data .= $str; if(substr($str,3,1) == " ") { break; } } return $data; } $text_email = "
Вы только что добавили объявление на сайте mashintop.ru. Посмотреть его можно здесьВаш ключ: ".$key."
С помощью данного ключа вы сможете управлять своим объявлением.
"; $text_email .= " "; smtpmail("[email protected]", "Ключ от объявления на mashintop.ru", $text_email, "yandex"); //используем яндекс smtpmail("[email protected]", "Ключ от объявления на mashintop.ru", $text_email, "mail"); //используем майл smtpmail("[email protected]", "Ключ от объявления на mashintop.ru", $text_email, "rambler"); //используем рамблер smtpmail("[email protected]", "Ключ от объявления на mashintop.ru", $text_email, "gmail"); // а вот gmail не работает:(
Вот и все, готовый скрипт у вас в руках, только скопируйте, поменяйте значения массива $config и все будет отлично работать.
Теперь давайте разберем некоторые элементы, на которые я бы хотел заострить внимание.
Нарпимер, ошибку, которую мы получаем при попытке отправить через SMTP гугл. Изначально мы видим вот такой вот текст ошибки:
Чтобы увидеть что-то более конкретное, давайте немного видоизменим код
Fputs($smtp_conn,"AUTH LOGINrn"); $code = substr(get_data($smtp_conn),0,3000); echo $code; if($code != 334) {print "сервер не разрешил начать авторизацию"; fclose($smtp_conn); exit;}
И получаем в итогде вполне конкретную ошибку
530 5.7.0 Must issue a STARTTLS command first. x4sm16408296lbn.2 - gsmtp
Что она означает точно — я не знаю, но полагаю, что связанно что-то с защищеннымнезащищенным подключением. Как от нее избавиться — пока не знаю, поэтому gmail остался не побежденным на данный момент.
Настройки отправки почты через SMTP
Встречаются случаи, когда сайтостроители сталкиваются с проблемой работы электронной почты сайта на CMS Joomla. Например, при отправки письма через форму обратной связи могут появляться ошибки следующего типа: "Could not instantiate mail function" или "Не удалось вызвать функцию mail" . Также возможен вариант отправления письма без появления ошибок, однако в результате оно все равно не доходит до адресата.
Почему же происходят данные проблемы с почтой? Чтобы ответить на данный вопрос необходимо в панели управления пройти по следующему пути: "Система" - "Общие настройки" - вкладка "Сервер" - раздел "Настройка почты".
В CMS Joomla предусмотрено три механизма отправки писем: PHP Mail, Sendmail и SMTP. По умолчанию используется PHP Mail с которым зачастую и происходят проблемы, которые, в основном, связаны с настройками используемого хостинга.
Исходя из вышеизложенного делаем вывод: либо обращаемся за помощью к хостинг провайдеру, либо используем способ отправки писем Sendmail или SMTP. Остановимся на использовании SMTP.
Настройки отправки почты при помощи SMTP
SMTP (англ. Simple Mail Transfer Protocol) - сетевой протокол, используемый для передачи электронной почты. Для использования SMTP необходимо корректно выставить настройки определенного почтового сервера, который будет использоваться.
Чтобы увидеть настройки SMTP, необходимо в "Способе отправки" выбрать "SMTP". Рассмотрим каждую настройку популярных почтовых серверов: Yandex, Mail, Gmail, Rambler и Yahoo.
Настройки SMTP для Yandex
- E-mail сайта: почтовый ящик на yandex.ru, например: [email protected]
- Защита SMTP: SSL
- Порт SMTP-сервера: 465
- Имя пользователя SMTP: логин ящика на yandex.ru, например: khasanov (без @yandex.ru)
- SMTP-сервер: smtp.yandex.ru
Настройки SMTP для Mail
- E-mail сайта: почтовый ящик на mail.ru, например: [email protected]
- Отправитель письма: запись, которая будет отображаться у адресата в поле "Отправитель"
- Отключить рассылку: вкл/откл. функции массовой рассылки писем
- Авторизация на SMTP-сервере: Да
- Защита SMTP: SSL
- Порт SMTP-сервера: 465
- Имя пользователя SMTP: почтовый ящик на mail.ru, например: [email protected]
- Пароль для SMTP: пароль от почтового ящика
- SMTP-сервер: smtp.mail.ru
Настройки SMTP для Gmail
- E-mail сайта: почтовый ящик на gmail.com, например: [email protected]
- Отправитель письма: запись, которая будет отображаться у адресата в поле "Отправитель"
- Отключить рассылку: вкл/откл. функции массовой рассылки писем
- Авторизация на SMTP-сервере: Да
- Защита SMTP: SSL
- Порт SMTP-сервера: 465
- Имя пользователя SMTP: почтовый ящик на gmail.com, например: [email protected]
- Пароль для SMTP: пароль от почтового ящика
- SMTP-сервер: smtp.gmail.com
Настройки SMTP для Rambler
- E-mail сайта: почтовый ящик на rambler.ru, например: [email protected]
- Отправитель письма: запись, которая будет отображаться у адресата в поле "Отправитель"
Поскольку отправка анонимных сообщений с серверов виртуального Windows-хостинга запрещена, отправку писем следует производить через SMTP-сервер , для чего так же возможно использовать и нашу почтовую систему.
Как отправлять письма, используя PHP?
С помощью любого класса PHP, поддерживающего авторизацию на smtp-сервере . Например, можно использовать набор классов PHPMailer.
Также вы можете воспользоваться нашим примером, в котором реализована отправка писем с использованием smtp-сервера , для которого требуется авторизация. Поэтому не забудьте добавить в скрипт соответствующие реквизиты доступа, например:
// Если нужно показать лог SMTP-сессии, то можно раскомментировать следующую строчку. // $_SERVER["debug"] = true; function MailSmtp ($reciever , $subject , $content , $headers , $debug = 0 ) { $smtp_server = "smtp.сайт" ; // адрес SMTP-сервера $smtp_port = 25 ; // порт SMTP-сервера $smtp_user = "[email protected]" ; // Имя пользователя для авторизации на SMTP-сервере $smtp_password = "pAsSwORd" ; // Пароль для авторизации на SMTP-сервере $mail_from = "[email protected]" ; // Ящик, с которого отправляется письмо $sock = fsockopen ($smtp_server , $smtp_port , $errno , $errstr , 30 ); $str = fgets ($sock , 512 ); if (! $sock ) { printf ("Socket is not created\n" ); exit(1 ); } smtp_msg ($sock , "HELO " . $_SERVER [ "SERVER_NAME" ]); smtp_msg ($sock , "AUTH LOGIN" ); smtp_msg ($sock , base64_encode ($smtp_user )); smtp_msg ($sock , base64_encode ($smtp_password )); smtp_msg ($sock , "MAIL FROM: <" . $mail_from . ">" ); smtp_msg ($sock , "RCPT TO: <" . $reciever . ">" ); smtp_msg ($sock , "DATA" ); $headers = "Subject: " . $subject . "\r\n" . $headers ; $data = $headers . "\r\n\r\n" . $content . "\r\n." ; smtp_msg ($sock , $data ); smtp_msg ($sock , "QUIT" ); fclose ($sock ); } function smtp_msg ($sock , $msg ) { if (! $sock ) { printf ("Broken socket!\n" ); exit(1 ); } if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) { printf ("Send from us: %s" , nl2br (htmlspecialchars ($msg ))); } fputs ($sock , " $msg \r\n" ); $str = fgets ($sock , 512 ); if (! $sock ) { printf ("Socket is down\n" ); exit(1 ); } else { if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) { printf ("Got from server: %s
" , nl2br (htmlspecialchars ($str ))); } $e = explode (" " , $str ); $code = array_shift ($e ); $str = implode (" " , $e ); if ($code > 499 ) { printf ("Problems with SMTP conversation.
Code %d.
Message %s
" , $code , $str ); exit(1 ); } } } ?>
Скачать пример готового скрипта с функцией MailSmtp(): smtpauth.php.sample
Использовать описанную выше функцию MailSmtp() можно для прямой замены функции mail(), рассмотрим пример самой простой формы на PHP:
// Заголовки сообщения, в них определяется кодировка сообщения, поля From, To и т.д. $headers = "MIME-Version: 1.0\r\n" ; $headers .= "Content-type: text/html; charset=windows-1251\r\n" ; $headers .= "To: $to \r\n" ; $headers .= "From: Имя отправителяДля того, чтобы данная форма заработала без функции mail(), мы включили файл smtpauth.php через require_once и вызвали функцию MailSmtp(), описанную в нем, с аналогичными для mail() аргументами. При этом сам вызов mail() мы закомментировали в коде, чтобы избежать ошибки при выполнении скрипта.
Как отправлять письма, используя ASP.NET?
Если вы используете версию 2.0, то используя класс MailMessage System.Net.Mail ), хорошо описанный .
Ниже приведены примеры его использования для языков «C#» и «VisualBasic»:
Пример для языка «C#»:
<% @Page Language="c#" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% MailMessage message = new MailMessage(); // создание нового письма message.To.Add ("[email protected]"); // добавление адреса получателя message.From = new MailAddress("from@domain.tld ", "Имя_отправителя"); // указание имени и адреса отправителя message.Subject = "Тема письма"; // указание темы письма message.BodyEncoding = System.Text.Encoding.UTF8; // указание кодировки письма message.IsBodyHtml = false; // указание формата письма (true - HTML, false - не HTML) message.Body = "Текст письма"; // указание текста (тела) письма SmtpClient client = new SmtpClient("smtp.сайт",25); // создание нового подключения к серверу "smtp.сайт" client.DeliveryMethod = SmtpDeliveryMethod.Network; // определяет метод отправки сообщений client.EnableSsl = false; // отключает необходимость использования защищенного соединения с сервером client.UseDefaultCredentials = false; // отключение использования реквизитов авторизации "по-умолчанию" client.Credentials = new NetworkCredential("postmaster@domain.tld ", "***password***"); // указание нужных реквизитов (имени пользователя и пароля) для авторизации на SMTP-сервере client.Send(message); // отправка сообщения %>Скачать пример готовой формы, демонстрирующей использование данного метода: MailForm.aspx .
Пример для языка «VisualBasic»:
<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% Dim smtpMssg AS new MailMessage smtpMssg.From = New MailAddress ("admin@domain.tld ", "Имя_отправителя") smtpMssg.To.Add ("[email protected]") " добавление адреса получателя smtpMssg.Subject = "Тема письма" " указание темы письма smtpMssg.Body = "Текст письма" " указание текста (тела) письма smtpMssg.BodyEncoding = System.Text.Encoding.UTF8 " указание кодировки письма smtpMssg.IsBodyHtml = false " указание формата письма (true - HTML, false - не HTML) Dim SmtpMail As New SmtpClient("smtp.сайт", 25)" объявление нового объекта типа "SmtpClient" SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network " указание метода доставки письма SmtpMail.UseDefaultCredentials = False " отключение использования реквизитов авторизации "по-умолчанию" SmtpMail.EnableSsl = False " отключает необходимость использования защищенного соединения с сервером SmtpMail.Credentials = new NetworkCredential("postmaster@domain.tld ", "***password***") " указание нужных реквизитов (имени пользователя и пароля) для авторизации на SMTP-сервере SmtpMail.Send(smtpMssg) " отправка сообщения %>Также существует устаревший (и не рекомендуется к использованию) класс SmtpMail (используется пространство имен System.Web.Mail ). Ниже приведен пример его использования для языка «VisualBasic»:
<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Web" %> <% @Import Namespace="System.Web.Mail" %> <% Dim smtpMssg = new MailMessage " объявление нового объекта типа "MailMessage" smtpMssg.From = "Имя_отправителяКак отправлять письма, используя ASP?
Обратите внимание, что при использовании нашего smtp-сервера требуется авторизация, поэтому не забудьте добавить в скрипт соответствующие реквизиты доступа, например:
<% iConfig = Server.CreateObject("CDO.Configuration") Set iConfig = Server.CreateObject("CDO.Configuration") With iConfig.Fields .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.сайт" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/languagecode") = "ru" .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "postmaster@domain.tld " .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password" .Update End With Set cdoMessage = CreateObject("CDO.Message") With cdoMessage Set .Configuration = iConfig .From = "Test userНекоторые CMS уже имеют встроенные средства для отправки корреспонденции или соответствующие модули, рассмотрим самые популярные из них.
Wordpress
Для данной CMS существует специальный модуль «WP Mail SMTP », пример его конфигурации описан на странице модуля .
Обратите внимание на иллюстрацию в примере, в условиях нашей почтовой системы требуется использовать 25-й порт и SSL-шифрование не требуется.
Joomla
В панели администрирования перейдите в раздел «Общие настройки», выберете вкладку «Сервер». В поле «Почта» требуется выбрать способ отправки как «SMTP-сервер », в полях «Адрес SMTP-сервера » и «SMTP-логин » и «SMTP-пароль » укажите соответствующие реквизиты почтовой системы, например: smtp.сайт, ящик@ваш_домен и соответствующий пароль.
Drupal
Эта CMS так же имеет собственный модуль для работы с SMTP-сервером , основанный на базе PHPMailer. Загрузить данный модуль можно на его странице на сайте CMS Drupal, описание установки модуля доступно в архиве с ним.
NetCat
Данная CMS не имеет встроенных функций для работы с SMTP-сервером . Для отправки почты скриптами сайта мы можем предложить использовать наше решение, для его подключения необходимо выполнить следующие действия:
- Скачать с нашего сайта архив с необходимыми файлами (send_auth_mail.php и mail.inc.php ) и распаковать его на компьютере;
Отредактировать файл send_auth_mail.php из архива, указав в нём реквизиты подключения к нужному SMTP-серверу:
- $mail_smtpServer = "smtp.сайт" ; (адрес SMTP-сервера )
- $mail_port = "25" ; (порт для подключения)
- $mail_username = "[email protected]" ; (имя пользователя для авторизации на SMTP-сервере )
- $mail_password = "Password" ; (пароль для авторизации на SMTP-сервере )
- Создать резервную копию файла domain.tld/www/netcat/admin/mail.inc.php ;
- Загрузить файлы send_auth_mail.php и mail.inc.php на виртуальную площадку в директорию domain.tld/www/netcat/admin/
domain.tld следует заменить на имя вашего домена.
Предлагаемое решение работает со всеми модулями NetCat, которые используют стандартные функции данной CMS для отправки почты.
2019-08-05
Здравствуйте, уважаемый посетитель!
Прошу извинить меня за задержку в обновлении блога. Но этому есть вполне понятное объяснение. Как-никак, лето, дача, гости, лес, вода и много другое, что не позволило мне заняться вопросами создания сайта. Но вот сейчас немного освободился, гости разъехались, и думаю, что теперь точно смогу этому уделить должное внимание.
Итак, после того, как в последней статье мы подключили почту своего домена к одному из почтовых сервисов, теперь посмотрим, как можно отправлять email с сайта. Причем так, чтобы наши письма не попадали в СПАМ, а надежно, с высокой степенью вероятности, доставлялись до наших адресатов.
Вообще, для отправки писем в PHP существует встроенная функция mail(). Но следует отметить, что несмотря на простоту такого способа (в этом случае для отправки писем достаточно указать всего одну строку кода с определенными параметрами), применение такого варианта имеет существенный недостаток, связанный с проблемой СПАМа.
Дело в том, что фильтры антиСПАМа почтовых серверов на стороне получателя не очень жалуют письма, отправленные через функцию mail(). И в большинстве случаев такие сообщения фильтруются, либо вообще удаляться, не доходя до адресата.
И для того, чтобы максимально исключить такие случаи, обычно применяют другой вариант, при котором отправка писем осуществляется, как будто это делается сторонним почтовым сервисом.
Такой способ называется отправкой почты через SMTP с авторизацией. Который мы сегодня и рассмотрим на примере отправки формы обратной связи. Причем для этого будем использовать довольно известную и популярную библиотеку PHPMailer, позволяющую достаточно просто организовать отправку писем через SMTP.
- Как мы будем отправлять письма обратной связи
- Создаем форму обратной связи
- Устанавливаем библиотеку PHPMailer
- Формируем скрипт отправки почты через SMTP
- Проверяем отправку email
- Исходные файлы сайта
Как мы будем отправлять письма обратной связи
Перед тем, как приступить к практической работе по отправке писем обратной связи, сначала определимся, как мы это будем это делать.
Форма обратной связи предназначена для того, чтобы пользователь для связи с администратором сайта мог передать свое сообщение. Обычно, такая форма состоит из нескольких полей и кнопки "Отправить".
В принципе, для отправки email достаточно использовать всего лишь несколько полей, которые дают достаточную информацию о пользователе и содержании сообщения, такие как:
- "Имя" - для ввода имени отправителя сообщения;
- "E-mail" - для адреса электронной почты отправителя;
- "Тема сообщения";
- "Текст сообщения".
Хотя можно добавить и другие. Например, номер телефона, если, действительно, в этом есть необходимость.
В нашем случае такие письма будут отправляться на адрес администратора сайта с реального почтового ящика с авторизацией на том почтовом сервисе, к которому подключен наш домен.
Так как в предыдущей статье мы остановились на проверке подключения доменной почты к сервису Яндекс.Почта, то и оправлять почту будем для этого варианта. Хотя это не принципиально. Ниже будут отмечены те опции, при изменении которых можно будет отправлять email через почтовый сервер Mail.ru.
В качестве реального почтового ящика, с которого будут отправляться письма, будем использовать аккаунт вновь созданного пользователя доменной почты, скажем с адресом [email protected]. А отправлять эти письма будем на почтовый ящик администратора [email protected], который ранее мы создали в предыдущей статье.
Таким образом отправителем письма из формы обратной связи будет являться почтовый ящик [email protected]., а получателем - [email protected]. При этом вся информация о пользователе, отправившем сообщение с его содержанием будет передаваться в теле отправленного письма.
Создаем форму обратной связи
После того, как мы определились с самим порядком отправки писем, теперь создадим форму обратной связи, с помощью которой будем это делать.
Ниже показан HTML-код такой формы, который мы разместим на странице "Контакты" (файл kontakty.php в каталоге articles).