Отправка e-mail в php

Original answer

I wasn’t quite sure as to what the question was, but am under the impression that a copy of the message is to be sent to the person who filled in the form.


Here is a tested/working copy of an HTML form and PHP handler. This uses the PHP function.

The PHP handler will also send a copy of the message to the person who filled in the form.

You can use two forward slashes in front of a line of code if you’re not going to use it.

For example: will not execute.

PHP handler (mail_handler.php)

To send as HTML:

If you wish to send mail as HTML and for both instances, then you will need to create two separate sets of HTML headers with different variable names.

http://php.net/manual/en/function.mail.php

Footnotes:

In regards to HTML5

You have to specify the URL of the service that will handle the submitted data, using the action attribute.

As outlined at https://www.w3.org/TR/html5/forms.html under 4.10.1.3 Configuring a form to communicate with a server. For complete information, consult the page.

Therefore, will not work in HTML5.

The proper syntax would be:

  • or
  • .

Note that will be the extension of the type of file used to handle the process. This could be a , , , file extension etc.

Consult the following Q&A on Stack if sending mail fails:

Отправка писем через SMTP с помощью PHPMailer на примере Yandex и Google

Можно так же отправить письмо через другой почтовик, например, через Яндекс. Код будет выглядеть примерно так:

// Подключаем библиотеку PHPMailer
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
require 'PHPMailer/PHPMailer.php';
require 'PHPMailer/SMTP.php';

// Создаем письмо
$mail = new PHPMailer();
$mail->isSMTP();                   // Отправка через SMTP
$mail->Host   = 'smtp.yandex.ru';  // Адрес SMTP сервера
$mail->SMTPAuth   = true;          // Enable SMTP authentication
$mail->Username   = 'login';       // ваше имя пользователя (без домена и @)
$mail->Password   = 'password';    // ваш пароль
$mail->SMTPSecure = 'ssl';         // шифрование ssl
$mail->Port   = 465;               // порт подключения

$mail->setFrom('login@ya.ru', 'Иван Иванов');    // от кого
$mail->addAddress('test@ya.ru', 'Вася Петров'); // кому

$mail->Subject = 'Тест';
$mail->msgHTML("<html><body>
                <h1>Здравствуйте!</h1>
                <p>Это тестовое письмо.</p>
                </html></body>");
// Отправляем
if ($mail->send()) {
  echo 'Письмо отправлено!';
} else {
  echo 'Ошибка: ' . $mail->ErrorInfo;
}

Отправка писем через Google имеет один нюанс: нужно в аккаунте google разрешить доступ ненадежным приложениям. Для этого нужно зайти в свой аккаунт https://myaccount.google.com, перейти в безопасность, зайти в раздел «Ненадежные приложения, у которых есть доступ к аккаунту» и там переключить в «Разрешено». На момент написания статьи это страница https://myaccount.google.com/u/0/lesssecureapps.

Дальше в php-программе отправка писем через PHPMailer происходит аналогично как через yandex, нужно только заменить настройки SMTP так:

$mail->Host   = 'smtp.gmail.com';  // Адрес SMTP сервера
$mail->SMTPAuth   = true;          // Enable SMTP authentication
$mail->Username   = 'login';       // ваше имя пользователя
$mail->Password   = 'password';    // ваш пароль
$mail->SMTPSecure = 'ssl';         // шифрование ssl
$mail->Port   = 465;               // порт подключения

Если первый раз запускаете программу отправки через smtp, тогда желательно перед отправкой дополнительно использовать $mail->SMTPDebug = 1; чтобы получать все сообщения клиента и smtp-сервера, т.е. на экран выведется весь процесс подключения, авторизации и т.д., что очень полезно для отладки вашей программы.

Отправка писем через функцию mail() с помощью PHPMailer

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

// Подключаем библиотеку PHPMailer
use PHPMailer\PHPMailer\PHPMailer;
require 'PHPMailer/PHPMailer.php';

// Создаем письмо
$mail = new PHPMailer();
$mail->setFrom('test@domain.ru', 'Иван Иванов'); // от кого (email и имя)
$mail->addAddress('test@ya.ru', 'Вася Петров');  // кому (email и имя)
$mail->Subject = 'Тест';                         // тема письма
// html текст письма
$mail->msgHTML("<html><body>
                <h1>Здравствуйте!</h1>
                <p>Это тестовое письмо.</p>
                </html></body>");
// Отправляем
if ($mail->send()) {
  echo 'Письмо отправлено!';
} else {
  echo 'Ошибка: ' . $mail->ErrorInfo;
}  

Как видим, всё довольно просто: подключаем библиотеку, заполняем от кого, кому, тему и текст письма и отправляем. Отправка писем таким способом будет работать только с почтовых адресов вашего домена (если только они не привязаны к другим почтовикам).

General v3 Web API Usage (Without Fluent Interface)

$apiKey = getenv('SENDGRID_API_KEY');
$sg = new \SendGrid($apiKey);

try {
    $response = $sg->client->_("suppression/bounces")->get();
    print $response->statusCode() . "\n";
    print_r($response->headers());
    print $response->body() . "\n";
} catch (Exception $e) {
    echo 'Caught exception: '.  $e->getMessage(). "\n";
}

Roadmap


If you are interested in the future direction of this project, please take a look at our open issues and pull requests. We would love to hear your feedback.

How to Contribute

We encourage contribution to our libraries (you might even score some nifty swag), please see our CONTRIBUTING guide for details.

Quick links:

About

sendgrid-php is maintained and funded by Twilio SendGrid, Inc. The names and logos for sendgrid-php are trademarks of Twilio SendGrid, Inc.

If you’ve instead found a bug in the library or would like new features added, go ahead and open issues or pull requests against this repo!

Отправка Писем с PHPMailer

PHPMailer — популярная библиотека отправки почты для PHP. Она поддерживает отправку писем, как через функцию mail(), так и через простой протокол передачи почты (SMTP). Библиотека значительно упрощает сложный процесс отправки писем с помощью PHP, предоставляя набор готовых функций для создания и отправки почты.

Установить PHPMailer довольно просто, особенно если у вас установлен Composer. Если вы используете Hostinger, вам не нужно об этом беспокоиться, поскольку он по умолчанию включен в каждый пакет хостинга.

Однако, если вам нужно установить PHPMailer вручную, тогда подключите свою учётную запись хостинга через терминал SSH. Следуй этой инструкции:

Загрузите и установите SSH-клиент PuTTY. Перейдите в панель управления hPanel, найдите и кликните по «SSH-доступ» в разделе «Расширенные«. Обратите внимание на раздел с информацией для SSH-доступа. Вам понадобится SSH IP, порт, имя пользователя и пароль. Откройте PuTTY, затем укажите свой SSH IP и порт соответственно. Нажмите Open, появится командное окно

Введите своё имя пользователя и пароль SSH. Как только это будет сделано, нажмите Enter. ПРИМЕЧАНИЕ: PuTTY НЕ показывает пароли. Не волнуйтесь, если вы не увидите ваш пароль на экране. Выполните следующую команду:

cd public_html
  1. Нажмите Enter, затем запустите эту команду:
composer require phpmailer/phpmailer
  1. Подождите, пока процесс установки не будет завершён.

Отправка письма с вложением с помощью PHPMailer

Здесь всё довольно просто, нужно лишь использовать метод addAttachment. Приведу пример, заодно продемонстрировав еще несколько дополнительных возможностей:

// Подключаем библиотеку PHPMailer
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer/PHPMailer.php';
require 'PHPMailer/Exception.php';

// Создаем письмо
$mail = new PHPMailer;
$mail->CharSet = 'UTF-8';
$mail->setFrom('test@test.ru', 'Иван Иванов');     // от кого
$mail->addReplyTo('test@test.ru', 'Иван Иванов');  // обратный адрес
$mail->addAddress('test@ya.ru', 'Вася Петров');    // кому
$mail->Subject = 'Тест';                           // тема
$mail->msgHTML(file_get_contents('contents.html'), __DIR__);  // получаем "тело" письма из файла
$mail->AltBody = 'Письмо обычным текстом';  // письмо обычным текстом, если клиент не поддерживает html
$mail->addAttachment('my_file.txt');        // прикрепляем один файл
$mail->addAttachment('phpmailer.jpg');      // прикрепляем второй файл

// Отправляем
if ($mail->send()) {
  echo 'Письмо отправлено!';
} else {
  echo 'Ошибка: ' . $mail->ErrorInfo;
}

Адресов получателей можно добавить несколько с помощью addAddress. Или, если необходимо, можно наоборот, очистить все адреса получателей методом clearAddresses(). Очистить все вложения можно с помощью clearAttachments().

Так же можно использовать AddEmbeddedImage чтобы добавить в письмо вложение (обычно изображения), которое предназначено для использования в html-коде и не будет доступно для скачивания. Пример использования картинки в письме, не доступной для скачивания:

// Подключаем библиотеку PHPMailer
use PHPMailer\PHPMailer\PHPMailer;
require 'PHPMailer/PHPMailer.php';

//Создаем письмо
$mail = new PHPMailer;
$mail->IsHTML(true);
$mail->setFrom('test@test.ru', 'Иван Иванов');
$mail->addAddress('test@ya.ru', 'Вася Петров');
$mail->Subject = 'Test';
$mail->AddEmbeddedImage('phpmailer.jpg','testImage');
$mail->Body = '<p>Изображение в html-коде <img src="cid:testImage"></p>';

// Отправляем
$mail->send();

Таким образом, вы можете отправлять письма с изображениями, которые есть только в теле письма, но их нельзя скачать как вложение. Эти изображения можно использовать в любом месте html-кода письма, нужно лишь указывать вместо url-адреса cid изображения, который вы использовали в AddEmbeddedImage.

Internals Mailing Lists

PHP and Zend Engine internals lists Moderated Archive Newsgroup Normal Digest
Internals list <internals@lists.php.net>A medium volume list for those who want to help out with the development of PHP no yes yes http
Windows Internals list <internals-win@lists.php.net>A low volume list for those who want to help out with the development of PHP on Windows no n/a yes http
Git commit list <php-cvs@lists.php.net>All commits to internals (php-src) and the Zend Engine are posted to this list automatically yes yes yes http n/a
Git pull requests <git-pulls@lists.php.net>Pull requests from Github no n/a yes http n/a
Quality Assurance list <php-qa@lists.php.net>List for the members of the PHP-QA Team no yes yes http n/a
General bugs <php-bugs@lists.php.net>General bug activity are posted here no n/a yes http n/a
PHP Standardization and interoperability list <standards@lists.php.net>Development of language standards no n/a yes http n/a
PHP internal website mailing lists Moderated Archive Newsgroup Normal Digest
PHP php.net internal infrastructure discussion <php-webmaster@lists.php.net>List for discussing and maintaining the php.net web infrastructure. For general PHP support questions, see «General Mailing Lists» or the support page no n/a yes http n/a
PHP documentation mailing lists Moderated Archive Newsgroup Normal Digest
Documentation discussion <phpdoc@lists.php.net>List for discussing the PHP documentation no yes yes http n/a
Documentation changes and commits <doc-cvs@lists.php.net>Changes to the documentation are posted here yes yes yes http n/a
Documentation bugs <doc-bugs@lists.php.net>Documentation bug activity (translations, sources, and build system) are posted here yes yes yes http n/a

PHP script to connect to a SMTP server and send email on Windows 7

This should work with newer versions of PHP. But you never know.

Step 1, You need a username/password with an SMTP server:

I’m assuming you are using IIS. So create a file called index.php under and put this code in there:

For example:

  1. Set the smtp_port setting to the port of your smtp server.
  2. Set the smtp_crypto setting to what your smtp server needs.
  3. Set the $newline and $crlf so it’s compatible with what your smtp server uses. If you pick wrong, the smtp server may ignore your request without error. I use \r\n, for you maybe is required.

The linked code is too long to paste as a stackoverflow answer, If you want to edit it, leave a comment in here or through github and I’ll change it.

Step 4, make sure your php.ini has ssl extension enabled:

Find your PHP.ini file and uncomment the

So it looks like:

Step 5, Run the index.php file you just made in a browser:

You should get the following output:

General Mailing Lists

General mailing lists for PHP users Moderated Archive Newsgroup Normal Digest
Announcements <php-announce@lists.php.net>Announcements of new PHP releases are sent to this very low-volume list yes n/a yes http n/a
General user list <php-general@lists.php.net>This is a high volume list for general PHP support; ask PHP questions here no yes yes http
Windows PHP users list <php-windows@lists.php.net>Using PHP on Microsoft Windows no yes yes http
Subject specific lists for PHP users Moderated Archive Newsgroup Normal Digest
Installation issues and problems <php-install@lists.php.net>How to install PHP with particular configurations and servers no yes yes http
Databases and PHP <php-db@lists.php.net>This list is for the discussion of PHP database topics no yes yes http
Unicode and Internationalization <php-i18n@lists.php.net>Unicode support, Internationalization (i18n) and localization (l10n) issues and features no yes yes http
PHP evangelism mailing list <php-evangelism@lists.php.net>A list for people interested in promoting PHP and learning good reasons to support PHP in the enterprise yes yes yes http
PHP SOAP list <soap@lists.php.net>List for the SOAP developers no n/a yes http n/a
Non-English language mailing lists Moderated Archive Newsgroup Normal Digest
Spanish PHP Mailing list <php-es@lists.php.net>List for Spanish speaking people interested in PHP no n/a yes http n/a

История технологий PHP

Они используются для разработки веб-приложений. Технологии эти появились случайно, как и многие другие великие открытия. Расмус Лердорф искал решение проблемы перегрузки на сервере, где он размещал свою личную страницу и учебную программу. Это привело к созданию PHP (Personal Home Page) в 1994. В 1995 году Rasmus выпустил исходный код и создал список рассылки для обмена идей, улучшения, исправления. С тех пор язык рос и развивался как проект с открытым исходным кодом.

You will be interested:How dangerous is the new coronavirus?


В 1996 году, всего через год после опубликования, он уже использовался на 15 000 веб-сайтов. В 1998 году его присутствие в Интернете составило почти 60 000 доменов, это примерно 1 % от общего числа существующих проектов и блогов. В настоящее время PHP используют примерно 24 % всех имеющихся веб-проектов мира.

Такая популярность модели вызвана не только качеством, но и важностью обратной связи. Среди сайтов, которые сегодня используют эту технологию: WordPress, Twitter и Facebook

Поэтому эволюция PHP, отвечающая препроцессору гипертекста, несомненно, экспоненциальная во всех отношениях.

Отправка подписанного и зашифрованного письма через PHPMailer

По-умолчанию, PHPMailer шифрует все отправляемые письма. Отключить шифрование письма можно только при отправке писем через SMTP использовав код:

$mail->SMTPSecure = false;
$mail->SMTPAutoTLS = false;

Чтобы подписать письмо подписью DKIM, необходимо выполнить несколько действий:

  • Сгенерировать приватный (private) и публичный (public) ключи для вашего домена
  • Добавить DNS-запись для домена типа TXT с публичным ключом
  • Настроить DKIM подпись в PHPMailer перед отправкой письма

Теперь опишу каждый шаг немного подробнее.

Генерация приватного и публичного ключей

Если у вас Linux-хостинг и есть доступ в Shell, то сгенерировать файлы ключей проще простого, нужно выполнить всего 2 команды с обычными правами своего пользователя:

openssl genrsa -out test-private.pem 1024
openssl rsa -in test-private.pem -out test-public.pem -pubout

Соответственно, test-private.pem и test-public.pem — это приватный и публичный ключи. Сохранить их нужно в папке, которая будет не доступна посетителям сайта или кому-то еще кроме вас.

Если нет возможности выполнить команды в shell, тогда чтобы сгенерировать приватный (private) и публичный (public) ключи и сохранить их в файлы, можно воспользоваться следующим кодом:

$domain = 'test.ru';                   // ваш домен
$privatekeyfile = 'test-private.pem';  // имя файла, в который будет записан приватный ключ
$publickeyfile = 'test-public.pem';    // имя файла, в который будет записан публичный ключ

if (file_exists($privatekeyfile)) {
  echo "<p>Using existing keys</p>";
  $privatekey = file_get_contents($privatekeyfile);
  $publickey = file_get_contents($publickeyfile);
} else {
  echo "<p>Create keys</b>";
  $pk = openssl_pkey_new(
      
  );
  openssl_pkey_export_to_file($pk, $privatekeyfile);
  $pubKey = openssl_pkey_get_details($pk);
  $publickey = $pubKey;
  file_put_contents($publickeyfile, $publickey);
  $privatekey = file_get_contents($privatekeyfile);
}
echo "<p>Private key (keep this private!):</p><pre>" . $privatekey . "</pre>";
echo "<p>Public key:</p><pre>" . $publickey . "</pre>";

Внимание! Не забудьте убедиться, что папка, в которую будут сохраняться файлы, доступна для записи

Добавление DNS-записи с публичным ключом

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

Нужно добавить DNS-запись следующего вида:

Имя записи: mail._domainkey.test.ru. (в конце точка «.»)

TTL: 3600 (или какое будет по-умолчанию)

Тип записи: TXT

Значение: v=DKIM1; h=sha256; t=s; p=ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ

В имени записи test.ru нужно заменить на имя вашего домена. Слова «ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ» вы заменяете на текст, который вы получили на предыдущем шаге после «Public key», без «——BEGIN PUBLIC KEY——» и «——END PUBLIC KEY——«, только сам ключ. При этом все строчки ключа нужно соединить в одну длинную строку, чтобы переводов строки не было.

Настройка подписи DKIM в PHPMailer и отправка письма

Теперь осталось лишь сделать несколько настроек PHPMailer перед отправкой письма и оно будет подписано. Думаю, на приведенном примере будет всё понятно:

// Подключаем библиотеку
use PHPMailer\PHPMailer\PHPMailer;
require 'PHPMailer/PHPMailer.php';

// Создаем письмо
$mail = new PHPMailer;
$mail->CharSet = 'UTF-8';
$mail->setFrom('test@test.ru');
$mail->addAddress('test@ya.ru');
$mail->Subject = 'Это тест';
$mail->msgHTML('<p>Это тест</p>');

// Настройка DKIM подписи
$mail->DKIM_domain = 'test.ru';
$mail->DKIM_private = 'test-private.pem';
$mail->DKIM_selector = 'mail';

// Отправляем
$mail->send();

Разумеется, test.ru вы должны поменять на имя своего домена, а test-private.pem на полный путь и имя файла приватного ключа, который был создан на этапе генерации ключей.

Теперь, ваши письма, отправляемые через PHPMailer будут подписаны подписью DKIM вашим приватным ключом.

Hello Email

$email = new \SendGrid\Mail\Mail();
$email->setFrom("test@example.com", "Example User");
$email->setSubject("Sending with Twilio SendGrid is Fun");
$email->addTo("test@example.com", "Example User");
$email->addContent("text/plain", "and easy to do anywhere, even with PHP");
$email->addContent(
    "text/html", "<strong>and easy to do anywhere, even with PHP</strong>"
);
$sendgrid = new \SendGrid(getenv('SENDGRID_API_KEY'));
try {
    $response = $sendgrid->send($email);
    print $response->statusCode() . "\n";
    print_r($response->headers());
    print $response->body() . "\n";
} catch (Exception $e) {
    echo 'Caught exception: '. $e->getMessage() ."\n";
}

Запуск скрипта

PHPMailer предлагает пользователю дополнительные функции, которые можно попробовать в официальном репозитории GitHub. Также, если он использует WordPress, то может легко создать контактную форму с помощью плагинов.

Используют PHPMailer не только для отправки сообщений. Можно создать контактную форму, где посетители или пользователи связываются с сайтом. Ниже приведен конечный результат создания формы.

Порядок запуска скрипта:

  1. Создают файл testphpmailer.php и заполняют поля SMTP, которые были получены ранее.
  2. Выполняют скрипт, введя YourDomain.com/testphpmailer.php в браузере, появится сообщение.
  3. Как только пользователь его отправит, то получит подтверждение, что содержимое будет доставлено в ящик электронной почты, указанный в поле Address.
  4. Если контактная форма PHPMailer не работает, для проверки функции Mail PHP добавляют следующую строку, чтобы узнать причину проблемы: $ mail-> SMTPDebug = 2.

Разбор JSON с PHP


Поддержка JSON в PHP чрезвычайно проста, только с одной общей библиотекой для обработки преобразования данных из массивов и объектов PHP. Она быстро набирает популярность благодаря удобочитаемости, мобильности и возможности использования в веб-браузерах без дополнительных баз. Если пользователь настороженно относится к XML, JSON, для него это лучшее направление работы.

С XML комфортнее работать с пользовательскими данными непосредственно в используемом синтаксическом анализаторе XML. С помощью JSON можно немедленно преобразовать данные в объект или массив PHP и работать с ними, используя знакомые структуры PHP, потока управления и функции.

Первое, что нужно сделать приложению — проверить функцию Mail PHP, соответствует ли полученный код ошибки ожиданиям. Для простого запроса GET ответ должен быть 200, если он был успешным.

Чтобы получить код состояния с помощью Json decode, где $ return представляет контент, возвращаемый из запроса API, для $ code будет установлено значение 200. Второй аргумент в функции Mail PHP Json decode post возвращает результат в виде ассоциативного массива, а не объекта.

Еще лучший способ проверить наличие ошибки — сделать следующее:

$json = json_decode($return, true);

$code = $json;

$json = json_decode($return, true);

$error = isset($json);

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

Популярная почтовая библиотека

Существует множество способов доставки писем. Обычно отправляют электронную почту двумя способами:

  • используя встроенную в PHP функцию Mail;
  • используя стороннюю библиотеку, такую как PHPMailer с SMTP.

Перед началом использования программы понадобится следующее:

Веб-хостинг. Учетная запись электронной почты. Включенная функция PHP Mail. Включенная функция SMTP. Домен с записи Hostinger MX.

Mail в PHP позволяет отправлять электронную почту с помощью локальной программы sendmail. Каждый раз, когда пользователь запускает сервис почты, он вызывает эту локальную программу, обычно настраиваемую системным администратором. Можно включить или отключить эту функцию в разделе «Электронная почта» -> «Раздел управления почтовой службой».

PHPMailer — популярная библиотека, поддерживающая отправку почты через функцию PHP Mail или SMTP.

Алгоритм работы:

Чтобы использовать PHPMailer с Hostinger SMTP, сначала необходимо создать идентификатор в разделе «Учетная запись электронной почты» на панели веб-хостинга. У пользователя будет четыре поля: имя пользователя учетной записи электронной почты, пароль, SMTP-хост, порт SMTP. После этого начинают установку PHPMailer. Один из простых способов сделать это — использовать Composer, который предварительно интегрирован в планы общего хостинга, поэтому подключаются через SSH и выполняют следующую команду: cd public_html. Далее запускают: composer requires phpmailer и ждут несколько минут, пока установка завершится и PHPMailer появится в созданном каталоге поставщиков. Для доставки используется SMTP. Эта строка импортирует класс PHPMailer в глобальное пространство имен и включает в себя различные библиотеки. Отправляют HTML-сообщение. Его содержимое будет взято из файла message.html, расположенного в том же каталоге. Это позволяет форматировать текст и дает большую функциональность по сравнению с обычными текстовыми сообщениями.

Проект с самоустанавливающимися пакетами

PHP — бесплатный и открытый язык с низкой кривой обучения, его синтаксис прост и соответствует базовым стандартам объектно-ориентированного программирования. Сложные среды разработки не требуются, так же как и время для образования. Программирование ведут без посторонней помощи, все доступные IDE бесплатны, а разработки быстры и просты в настройке.

Развернуть проект в PHP легко, потому что он обладает пакетами самостоятельной интеграции, которые используют: Apache и MySQL как для UNIX (LAMPP), так и для Windows (XAMPP). Оба легко устанавливаются и настраиваются как настольное приложение. Пользователь получает локальный сервер с доступом к базе данных на компьютере, готовый к разработке любого проекта. Не тратится время на проблемы с совместимостью. Кроме того, он предлагает легкий доступ к базам данных и поддерживает многие форматы, а не только MySQL.

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

Первая часть формы проверяет, заполнено ли поле ввода адреса электронной почты. Если это не так, отображается HTML-форма на странице. Если онлайн-письмо подготовлено, после того как посетитель заполнит форму, оно готово к отсылке. При нажатии кнопки «Отправить» страница перезагружается, PHP проверяет, введен ли адрес электронной почты, и отправляет документ.

Частые ошибки, возникающие при отправке PHP формы с сайта

Первая, наверное самая популярная ошибка, это когда вы видите пустую белую страницу без сообщений. Это означает, что вы допустили ошибку в коде страницы. Вам нужно включить отображение всех ошибок в PHP и тогда вы увидите, где допущена ошибка. Добавьте в код:

Файл send.php должен запускаться только на сервере, иначе код просто не будет работать. Желательно, чтобы это был не локальный сервер, так как он не всегда настроен на отправку данных на внешний почтовый сервер. Если вы запустите код не на сервере, то вам отобразиться код PHP прямо на странице.

Таким образом, для корректной работы я рекомендую поместить файл send.php на хостинг сайта. Там, как правило, все уже настроено.

Еще одна частая ошибка, когда появляется оповещение «Сообщение успешно отправлено», а письмо не приходит на почту. В этом случае нужно внимательно проверить строку:


С этим читают