Содержание

Получаем данные от элементов формы с помощью PHP

В этом уроки мы с помощью функций PHP получим данные, которые будет вводить пользователь в форму.

Первое, что нам нужно — это создать форму:

<form action="app/check.php" method="post">

<p>Имя: <input name="name" type="text"></p>

<p>Фамилия: <input name="surname" type="text"></p>

<p>E-mail: <input name="email" type="text"></p>

<p>Сообщение: <br /><textarea name="message" cols="30" rows="5"></textarea></p>

<p><input type='submit' value='Отправить'></p>

</form>

Обратите внимание на строку action=»app/check.php» — это адрес обработчика формы, сюда будут отправляться данные формы, после нажатия кнопки Отправить. Также, на параметр name у полей формы, мы будем использовать эти имена при написании кода.

Передавать данные будем методом — POST.

1. Давайте начнем. Создайте и откройте (через редактор) обработчик app/code.php — сначала, это просто пустая страница. Далее откройте тег PHP — <?php.

2. Нам нужно проверить, была ли отправлена форма, для этого мы будем использовать глобальную переменную $_SERVER и проверять REQUEST_METHOD

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
    // наш код
}
?>

3. Дальше, если форма отправлена, мы можем получить данные от поля «Имя», для этого, какой-нибуть переменной присваиваем полученное значение от этого поля, например:

<?php
$name = $_POST['name']; 
?>

$_POST — переменная, в которой сохраняются данные, если форма была отправлена методом POST.

$_POST['name'] — получаем данные от поля name.

4. Тоже самое делаем и для остальных наших полей:

<?php
$name = $_POST['name'];

$surname = $_POST['surname'];
$email = $_POST['email'];
$message = $_POST['message'];
?>

5. Данные мы получили, теперь мы можем их вывести, для этого в страницу обработчика дописываем код:

<?php
$name = $_POST['name'];

$surname = $_POST['surname'];
$email = $_POST['email'];
$message = $_POST['message']; 

echo $name."<br />".$surname."<br />".$email."<br />".$message."<br />"; 
?>

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

Вот так, можно получать данные введенные в элементы формы.

Посмотреть исходники

PHP Обработка форм



Для сбора данных формы используются PHP-глобальные $ _жет и $ _пост.


PHP-Простая HTML-форма

В приведенном ниже примере показана простая HTML-форма с двумя полями ввода и кнопкой Submit:

Пример

<form action=»welcome.php» method=»post»>
Name: <input type=»text» name=»name»><br>
E-mail: <input type=»text» name=»email»><br>
<input type=»submit»>
</form>

</body>
</html>

Когда пользователь заполняет форму выше и нажимает кнопку Submit, данные формы отправляются для обработки в файл PHP с именем «Welcome. php». Данные формы передаются с помощью метода HTTP POST.

Для отображения отправленных данных можно просто повторить все переменные. «Welcome. php» выглядит следующим:

Welcome <?php echo $_POST[«name»]; ?><br>
Your email address is: <?php echo $_POST[«email»]; ?>

</body>
</html>

Выход может быть что-то вроде этого:

Такой же результат может быть достигнут с помощью метода HTTP GET:

Пример

<form action=»welcome_get.

php» method=»get»>
Name: <input type=»text» name=»name»><br>
E-mail: <input type=»text» name=»email»><br>
<input type=»submit»>
</form>

</body>
</html>

и «welcome_get.php» выглядит так:

Welcome <?php echo $_GET[«name»]; ?><br>
Your email address is: <?php echo $_GET[«email»]; ?>

</body>
</html>

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

Подумайте безопасности при обработке PHP форм!

Эта страница не содержит никакой проверки формы, она просто показывает, как можно отправлять и извлекать данные формы.

Однако на следующих страницах будет показано, как обрабатывать PHP-формы с учетом безопасности! Правильная проверка данных формы важна для защиты вашей формы от хакеров и спамеров!



Получить VS.

Post

Оба Get и POST создать массив (например, Array (ключ = > значение, Key2 = > value2, Key3 = > валуе3,…)). Этот массив содержит пары «ключ-значение», где ключи — это имена элементов управления формы, а значения — входные данные пользователя.

Как Get, так и POST рассматриваются как $ _жет и $ _пост. Это глобальные, что означает, что они всегда доступны, независимо от области видимости-и вы можете получить к ним доступ из любой функции, класс или файл без необходимости делать ничего особенного.

$ _жет-это массив переменных, передаваемых текущему сценарию через параметры URL.

$ _пост-это массив переменных, передаваемых текущему сценарию с помощью метода HTTP POST.


Когда использовать Get?

Информация, отправляемая из формы с методом GET, видна всем (все имена переменных и значения отображаются в URL-адресе). Get также имеет ограничения на объем отправляемой информации. Ограничение составляет около 2000 символов. Однако, поскольку переменные отображаются в URL-адресе, можно закладка страницы. Это может быть полезно в некоторых случаях.

Get может использоваться для отправки не конфиденциальных данных.

Примечание: Get никогда не должны использоваться для отправки паролей или другой конфиденциальной информации!


Когда использовать POST?

Информация, отправляемая из формы с методом POST, невидима для других (все имена и значения внедряются в тело HTTP-запроса) и не имеет ограничений на объем отправляемой информации.

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

Однако, поскольку переменные не отображаются в URL-адресе, невозможно закладка страницы.

Разработчики предпочитают публикацию для отправки данных формы.

Далее, давайте посмотрим, как мы можем обрабатывать PHP формирует безопасный способ!


PHP mail под Windows.

Отправка почты из PHP скриптов

В этой статье я хочу рассказать об отправке почты из php скриптов под Windows.

С точки зрения php программиста отправка почты выполняется с помощью стандартной функции mail().

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

Обычно эти ошибки имеют примерно такое описание:

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in E:\www\simplemail\mailer.php on line ......

Дело в том, что функция mail сама по себе почту не отправляет, она просто вызывает программу sendmail, которая в дистрибутив web сервера и php интерпретатора не входит (и не должна).

Sendmail, в свою очередь, для отправки почты использует SMTP сервер.

Таким образом, чтобы php скрипт мог отправлять почту нужно

установить и настроить sendmail и SMTP сервер.

Версию sendmail для Windows можно скачать здесь.

Установка и настройка выполняется в три этапа.

1) Распаковываем архив на тот же диск, где установлен php. Например, я создал папку C:\wamp\sendmail.

2) Вносим изменения в файл php.ini:

[mail function]
SMTP =
sendmail_from =
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"

Как видите, нужно только указать путь к sendmail чтобы php мог ее найти.

3) Настраиваем sendmail. Все настройки находятся в файле sendmail.ini (расположен в папке с sendmail).

Но перед тем как приступать к настройке пару слов об SMTP сервере. Вам совсем не обязательно устанавливать сервер на вашем компьютере. Многие почтовые сервисы предоставляют бесплатный доступ к своим серверам.

Ниже я покажу пример настройки sendmail для работы с SMTP сервером mail.ru, но, естественно, вы выбрать любой другой.

Итак, открываем sendmail.ini и устанавливаем следующие параметры:

smtp_server=smtp.mail.ru ; адрес SMTP сервера
smtp_port=25 ; порт SMTP сервера

default_domain=mail.ru ; домен по-умолчанию

error_logfile=error.log ; файл в который будет записываться лог ошибок

debug_logfile=debug.log ; очень полезная на этапе отладки опция. Протоколируются все операции, которые выполняет sendmail

[email protected] ; имя вашего аккаунта
auth_password=account_password ; ваш пароль

; следующие три опции используются если перед авторизацией на SMTP сервере требуется авторизация на POP3 сервере
pop3_server=pop.mail.ru
[email protected]
pop3_password=account_password

; параметр для команды MAIL FROM
force_sender=account_name@mail. ru

hostname=mail.ru

Теперь не забудьте перезапустить web сервер, чтобы изменения вступили в силу.

Чтобы протестировать работу почты напишем простенький скрипт:

&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;Simple Mail&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;?php
$addr = $_POST['addr'];
$theme = $_POST['theme'];
$text = $_POST['text'];
if (isset($addr) && isset($theme) && isset($text)
		&& $addr != "" && $theme != "" && $text != "") {
	if (mail($addr, $theme, $text, "From: [email protected]")) {
		echo "&lt;h4&gt;Сообщение отправлено&lt;/h4&gt;";
	}
	else {
		echo "&lt;h4&gt;При отправке сообщения возникла ошибка&lt;/h4&gt;";
	}
}
?&gt;
&lt;form action="mailer. php" method="post"&gt;
&lt;p&gt;
	&lt;label for="addr"&gt;eMail:&lt;/label&gt;
	&lt;input type="text" name="addr" size="30" /&gt;
&lt;/p&gt;
&lt;p&gt;
	&lt;label for="theme"&gt;Тема письма:&lt;/label&gt;
	&lt;input type="text" name="theme" size="30" /&gt;
&lt;/p&gt;
&lt;p&gt;
	&lt;label for="text"&gt;Текст письма:&lt;/label&gt;
	&lt;textarea rows="10" cols="20" name="text"&gt;&lt;/textarea&gt;
&lt;/p&gt;
&lt;p&gt;
	&lt;input type="submit" value="Отправить" /&gt;
&lt;/p&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;

Он создает форму с тремя полями для ввода адреса, темы и содержания письма. Нажатие на кнопку «Отправить» отправит запрос этому же скрипту (строка 23).

Если данные введены, то будет вызвана функция mail (строка 15), которая и отправит письмо. В случае успешной отправки функция возвращает true, в противном случае — false.

Как видите, ничего сложного в настойке почты нет.

Удачи!

Отправка e-mail в русской кодировке средствами PHP

Стандартная функция отправки почты в PHP не заботится о кодировке письма, а специальные классы отправки писем могут показаться слишком тяжеловесным решением. В настоящей статье приведена простая функция, которая позволяет отправлять MIME-совместимые письма на русском языке в виде простого текста или в формате HTML.

Тело письма может быть текстом в любой кодировке. Немного сложнее дело обстоит с составляющими заголовка письма (Subject, From, To), они по стандарту должны быть в US-ASCII. Использование в заголовках кодированного текста регламентируется стандартом RFC-2047. Стандарт задает две возможные формы кодирования — BASE64 и Quoted-Printable. BASE64 более универсальна и работает в том числе для кодировки UTF-8, поэтому мы выбрали именно эту форму. MIME-совместимый почтовый клиент обязан уметь читать обе формы.

Далее код функции, который достаточно схематичен:

<?php

function send_mime_mail($name_from, // имя отправителя
                        $email_from, // email отправителя
                        $name_to, // имя получателя
                        $email_to, // email получателя
                        $data_charset, // кодировка переданных данных
                        $send_charset, // кодировка письма
                        $subject, // тема письма
                        $body, // текст письма
                        $html = FALSE, // письмо в виде html или обычного текста
                        $reply_to = FALSE
                        ) {
  $to = mime_header_encode($name_to, $data_charset, $send_charset)
                 . ‘ <‘ . $email_to . ‘>’;
  $subject = mime_header_encode($subject, $data_charset, $send_charset);
  $from =  mime_header_encode($name_from, $data_charset, $send_charset)
                     .’ <‘ . $email_from . ‘>’;
  if($data_charset != $send_charset) {
    $body = iconv($data_charset, $send_charset, $body);
  }
  $headers = «From: $from\r\n»;
  $type = ($html) ? ‘html’ : ‘plain’;
  $headers .= «Content-type: text/$type; charset=$send_charset\r\n»;
  $headers .= «Mime-Version: 1.0\r\n»;
  if ($reply_to) {
      $headers .= «Reply-To: $reply_to»;
  }
  return mail($to, $subject, $body, $headers);
}

function mime_header_encode($str, $data_charset, $send_charset) {
  if($data_charset != $send_charset) {
    $str = iconv($data_charset, $send_charset, $str);
  }
  return ‘=?’ . $send_charset . ‘?B?’ . base64_encode($str) . ‘?=’;
}

?>

Мы определили собственную функцию mime_header_encode() для преобразования каждого заголовка в MIME-совместимый формат, несмотря на то, что в PHP предусмотрена аналогичная функция mb_encode_mimeheader(). От встроенной функции нам пришлось отказаться, так как на нашем сервере (PHP 5.1.6) она работает некорректно (возвращает неверный результат).

Использование описанной функции достаточно простое, см. пример ниже. В случае, если кодировка отправки письма отличается от текущей кодировки данных, используется iconv() для преобразования кодировки.

<?php
send_mime_mail(‘Автор письма’,
               ‘[email protected]’,
               ‘Получатель письма’,
               ‘[email protected]’,
               ‘CP1251’,  // кодировка, в которой находятся передаваемые строки
               ‘KOI8-R’, // кодировка, в которой будет отправлено письмо
               ‘Письмо-уведомление’,
               «Здравствуйте, я Ваша программа!»);

?>


© Все права на данную статью принадлежат порталу webew.ru. Перепечатка в интернет-изданиях разрешается только с указанием автора и прямой ссылки на оригинальную статью. Перепечатка в печатных изданиях допускается только с разрешения редакции.

Форма отправки данных в PHP (POST, GET)

Чтобы организовать передачу данных на сервер с помощью формы, потребуется реализовать HTML форму, в которую посетители сайта будут вводить свою информацию и PHP код, назначение которого в принятии и обработке полученных данных на сервере.

HTML форма отправки данных

Форма на странице формируется тегами <form>…</form>, внутри которых помещаются теги полей для ввода текстовой информации, теги специальных компонентов (например, поле со списком), теги для поля выбора и загрузки файла.

Для HTML5 так же существует возможность размещать теги полей формы не внутри тегов формы, а в любом месте на странице. При этом для каждого такого поля нужно указывать атрибут «form», чтобы определить с какой формой отправки он должен взаимодействовать.

Итак, простейшая форма отправки может содержать следующий код:

<form action="myform.php" method="post">
Значение А: <input type="text" name="data1">
Значение Б: <input type="text" name="data2">
<input type="submit" value="Отправить">
</form>

Элементы формы и их параметры:

action=»myform. php» – атрибут «action» определяет, какой php-файл будет обрабатывать отправляемые данные. В этом примере, данные будут отправлены в файл «myform.php», находящийся в той же директории что и страница с формой. Если этот атрибут не указать явно, данные формы будут отправлены по адресу страницы самой формы.

method=»post» – параметр method определяет метод передачи данных POST или GET. Более подробно об этом в статье «Отличия методов POST или GET». Если не указывать атрибут явно, по умолчанию будет использоваться метод GET.

Текст «Значение А:» и «Значение Б:» добавлен только с целью оформления и понятности формы для пользователя. Добавлять это для передачи данных не обязательно, но для того, чтобы пользователю стало понятно, что вводить, стоит указывать.

Теги <input> используются для формирования различных управляющих элементов формы.

type=»text» – атрибут «type» определяет вид поля. В зависимости от того, какой тип указан, меняется и внешний вид элемента, и его назначение. Значение атрибута «text» указывает, что в браузере элемент будет отображаться однострочным текстовым полем, куда пользователь сможет ввести свою строку.

name=»data1″ – атрибут «name», указывает имя, вернее индекс данных в массиве, полученных сервером. Это обязательный параметр, по которому в php-обработчике можно будет затем получить доступ переданному значению. Имя может быть выбрано произвольно, однако, удобнее когда это значение имеет какой-то понятный смысл.

type=»submit» – тег <input> с таким значением параметра «type» будет отображаться на странице как кнопка. На самом деле на форме можно обойтись и без кнопки. Если, например, в форме есть текстовые поля, то отправку можно осуществить, просто нажав «Ввод» на клавиатуре. Но наличие кнопки делает форму более понятной.

value=»Отправить» – в данном случае (для type=»submit») определяет только надпись на кнопке. Для type=»text», например, это будет текст, который будет выведен в текстовом поле.

В итоге, на странице этот код будет выглядеть приблизительно так:

 

Обработка отправленных HTML формой данных в PHP

Отправленные описанным способом данные, помещаются в суперглобальные массивы $_POST, $_GET и $_REQUEST. $_POST или $_GET будут содержать данные в зависимости от того, каким методом осуществлялась отправка. $_REQUEST содержит отправленные данные любым из указанных методов.

$_POST, $_GET и $_REQUEST – это ассоциативные массивы, поля-индексы которых совпадают с атрибутами «name» тегов <input>. Соответственно, для работы с данными в файле myform.php можно присвоить переменным значения элементов такого массива указав в качестве индекса имя поля:


$a = $_GET[];
$b = $_GET[];


$a = $_POST[];
$b = $_POST[];


$a = $_REQUEST[];
$b = $_REQUEST[];

Проверка заполнения полей формы

Иногда при получении данных нужно проверить, не отправил ли пользователь пустую форму. Для этого можно использовать функцию empty.

if (empty($_REQUEST[])) {
echo ;
} else {
echo ;
$a = $_REQUEST[];
}

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

if (isset($_REQUEST[])) {
echo ;
$a = $_REQUEST[];
} else {
echo ;
}

Кириллица в функции mail в PHP

| 5 |

Стас Пономарёв

Алекс

Бывает, когда делаешь простенькую форму обратной связи для сайта и непременно пользуясь функцией mail(), в который раз забываешь, а как же правильно отправить заголовки, чтобы кириллица во всех браузерах и почтовых клиентах отображалась правильно?

Для этого нужно немного. Вот, например, такой кусочек кода:

    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $to = '[email protected]'; 
    $subject = 'На сайте заполнена контактная форма ';    
    $body ="От: $name\n E-Mail: $email\n Текст:\n $message";
    $subject = '=?UTF-8?B?'.base64_encode($subject).'?=';
    $headers.="From: [email protected]\nReply-To: [email protected]\r\n";
    $headers.="Content-type: text/plain; charset=UTF-8\r\n";
    $headers.="Content-transfer-encoding: quoted-printable";
    
    if (mail ($to, $subject, $body, $headers)) {
     $result='<div>Спасибо! Ваше письмо отправлено</div>'; 
    } else {  
     $result='<div>Что-то не так... Попробуйте позже</div>';
    }

Думаю, стоит ещё напомнить, раз в этом кусочке кода упоминается кодировка utf-8, то и файл с кодом должен быть в этой кодировке.

Если вам понравился или пригодился текст, вы всегда можете отблагодарить!

Пожертвовать мне на кофе 3USD:

код, сайт
Полезное
Типы записей:
  • — обычная
  • — изображение
  • — цитата
  • — статус
  • — ссылка

Отправка электронной почты с помощью PHP и SendGrid — Документация по SendGrid | SendGrid

Мы рекомендуем использовать SendGrid PHP, нашу клиентскую библиотеку, доступную на GitHub, с полной документацией.

Библиотека официально не поддерживает V2 API, но вы можете использовать V2 со старой версией библиотеки. Для получения дополнительной информации см. Продолжение использования V2 в PHP.

Использование библиотеки PHP SendGrid

  // с использованием библиотеки PHP SendGrid
// https://github.com/sendgrid/sendgrid-php
требуется 'vendor / autoload.php ';
$ sendgrid = новый SendGrid ("SENDGRID_APIKEY");
$ email = новый SendGrid \ Email ();

$ email-> addTo ("[email protected]")
      -> setFrom ("[email protected]")
      -> setSubject («Отправка с помощью SendGrid - это весело»)
      -> setHtml ("и легко делать где угодно, даже с PHP");

$ sendgrid-> отправить ($ email);  

Использование PHP с cURL

Если вы решите не использовать клиентскую библиотеку SendGrid, вы можете использовать функцию PHP cURL для запроса веб-API.

   sendgrid.com/';
$ pass = $ sendgrid_apikey;
$ template_id = '';
$ js = массив (
  'sub' => array (': name' => array ('Elmer')),
  'фильтры' => массив ('шаблоны' => массив ('настройки' => массив ('включить' => 1, 'template_id' => $ template_id)))
);

$ params = массив (
    'to' => "[email protected]",
    'toname' => «Пример пользователя»,
    'from' => "вы @ youremail.com ",
    'fromname' => "Ваше имя",
    'subject' => «Тест PHP»,
    'text' => "Я пишу!",
    'html' => " Я HTML! ",
    'x-smtpapi' => json_encode ($ js),
  );

$ request = $ url.'api / mail.send.json ';

// Генерируем запрос на завиток
$ session = curl_init ($ запрос);
// Сообщаем PHP не использовать SSLv3 (вместо этого выбираем TLS)
curl_setopt ($ сеанс, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
curl_setopt ($ session, CURLOPT_HTTPHEADER, array ('Авторизация: предъявитель'.$ sendgrid_apikey));
// Сообщаем curl использовать HTTP POST
curl_setopt ($ сеанс, CURLOPT_POST, истина);
// Сообщаем curl, что это тело POST
curl_setopt ($ session, CURLOPT_POSTFIELDS, $ params);
// Сообщаем curl не возвращать заголовки, но возвращать ответ
curl_setopt ($ сеанс, CURLOPT_HEADER, ложь);
curl_setopt ($ session, CURLOPT_RETURNTRANSFER, истина);

// получаем ответ
$ response = curl_exec ($ сеанс);
curl_close ($ сеанс);

// распечатать все
print_r ($ ответ);

?>  

Электронное письмо, отправленное с использованием заголовка SMTPAPI

Этот пример продвигает предыдущий пример на шаг вперед, добавляя наш заголовок SMTPAPI для установки категории и отправки нескольким получателям. Категория называется test_category, и электронное письмо будет отправлено как на [email protected], так и на [email protected]. Обычный адрес, [email protected], не получит электронное письмо.

   массив (
    [email protected], [email protected]
  ),
  'category' => 'test_category'
);


$ params = массив (
    'api_user' => $ пользователь,
    'api_key' => $ проход,
    'x-smtpapi' => json_encode ($ json_string),
    'to' => 'example3 @ sendgrid.com ',
    'subject' => 'тестирование из curl',
    'html' => 'test body',
    'text' => 'Test body',
    'from' => '[email protected]',
  );


$ request = $ url.'api / mail.send.json ';

// Генерируем запрос на завиток
$ session = curl_init ($ запрос);
// Сообщаем curl использовать HTTP POST
curl_setopt ($ сеанс, CURLOPT_POST, истина);
// Сообщаем curl, что это тело POST
curl_setopt ($ session, CURLOPT_POSTFIELDS, $ params);
// Сообщаем curl не возвращать заголовки, но возвращать ответ
curl_setopt ($ сеанс, CURLOPT_HEADER, ложь);
// Сообщаем PHP не использовать SSLv3 (вместо этого выбираем TLS)
curl_setopt ($ сеанс, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
curl_setopt ($ session, CURLOPT_RETURNTRANSFER, истина);

// получаем ответ
$ response = curl_exec ($ сеанс);
curl_close ($ сеанс);

// распечатать все
print_r ($ ответ);

?>  

Электронное письмо с вложением файла

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

   $ пользователь,
    'api_key' => $ проход,
    'to' => '[email protected]',
    'subject' => 'проверка отправки файла',
    'html' => '

HTML

', 'text' => 'простой текст', 'from' => 'пример @ sendgrid.com ', 'files ['. $ fileName. ']' =>'@'.$filePath.'/'.$fileName. ); print_r ($ params); $ request = $ url.'api / mail.send.json '; // Генерируем запрос на завиток $ session = curl_init ($ запрос); // Сообщаем curl использовать HTTP POST curl_setopt ($ сеанс, CURLOPT_POST, истина); // Сообщаем curl, что это тело POST curl_setopt ($ session, CURLOPT_POSTFIELDS, $ params); // Сообщаем curl не возвращать заголовки, но возвращать ответ curl_setopt ($ сеанс, CURLOPT_HEADER, ложь); // Сообщаем PHP не использовать SSLv3 (вместо этого выбираем TLS) curl_setopt ($ сеанс, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); curl_setopt ($ session, CURLOPT_RETURNTRANSFER, истина); // получаем ответ $ response = curl_exec ($ сеанс); curl_close ($ сеанс); // распечатать все print_r ($ ответ); ?>

Отправка электронной почты с использованием PHP API Mailgun

Это гостевое сообщение от Михая Шароя, Разработчик в EDMdesigner.

Прошло много времени с тех пор, как появился Mailgun PHP SDK, и мы увидели множество изменений: новые функции, новые интеграции, созданные поверх, новые конечные точки API… но ядро ​​PHP осталось прежним. Поскольку это был первый SDK для Mailgun API, у него было время развиться и пройти несколько итераций, которые упростят его использование, что мы поняли, когда попробовали.

В этом посте мы покажем, как можно реализовать Mailgun API, используя PHP с PEAR.

Зачем мне нужна транзакционная электронная почта?

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

Как разработчик, вы всегда ищете наиболее простой (эффективный по времени) и эффективный способ решения проблемы. Этого часто можно достичь, выполнив два условия:

  1. Использование внешних библиотек, применимых к вашему решению.

  2. Разработка масштабируемых приложений.

Не нужно объяснять первое условие — вы же не начали бы писать ОС до того, как написали приложение, верно? В этой публикации мы рассмотрим, как использовать заранее написанные пакеты для отправки электронной почты.Но теперь перейдем ко второму пункту: читайте дальше.

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

Если вы заботитесь о доставке (а вам следует это делать), Mailgun предлагает высокую надежность, поскольку он разработан для очень хорошей обработки транзакционной электронной почты. Вы можете настроить несколько доменов и выбрать, хотите ли вы делиться IP-адресами или создавать собственную репутацию. Чтобы защитить заголовки электронной почты, Mailgun требует, чтобы в учетную запись были добавлены DKIM и SPF и чтобы они прошли проверку на уровне аутентификации и согласования. Все это работает вместе, чтобы помочь вам с доставкой электронной почты.

Теперь о хорошем: настройке скрипта-оболочки PHP для Mailgun. Сначала мы воспользуемся диспетчером пакетов, а затем рассмотрим примеры его применения.

Настройка вашей среды

PEAR — это инициатива сообщества, которая позволяет нам повторно использовать компоненты кода PHP, в то время как зависимый код также добавляется и поддерживается.

Во-первых, для продолжения вам понадобится PHP и менеджер пакетов.Если вы используете Linux, их лучше всего устанавливать с помощью Debian Advanced Package Manager (APT).

Хотя PEAR — более старое решение, оно все еще широко используется и сокращенно от PHP Extension and Application Repository. Судя по установленной версии PHP, у вас, вероятно, уже есть PEAR. Вы можете проверить это, выполнив команду pear без аргументов. Если вы получили предупреждение о том, что в вашей системе его нет, просто запустите: sudo apt install php-pear. Теперь мы готовы установить сторонний код PHP с PEAR.

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

Настройка проекта

Шаги с PEAR применяются следующим образом:

  1. Установка зависимостей проекта и включение пакетов путем запроса основного класса или скрипта vendor / autoloader.php

  2. Предоставить API связанные переменные

  3. Создание экземпляра класса / клиента Mail

  4. Вызов функции для отправки электронной почты

Просто, верно?

Использование PEAR
Шаг 1: Установите зависимости проекта

Мы можем установить пакет Mail, набрав sudo pear install Mail .Следующим шагом после завершения установки является включение этого параметра в файл сценария:

require_once "Mail. php";

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

Шаг 2: Введите входные переменные

Если вы перейдете на панель управления API, вы можете найти эти необходимые фрагменты информации на вкладке домена:

Нам нужен хост , учетная запись пользователя и пароль переменных и порт для использования :

1 $ host = "smtp.mailgun.org ";

2 $ username =" postmaster @ sandbox21a78f8 ... 3eb160ebc79.mailgun.org ";

3 $ password =" 75b958a6a0b ... dd417c80133 ";

4 $ port =" 587 ";

Мы используем SMTP-соединение для отправки электронной почты через нашу учетную запись Mailgun.

Шаг 3: Создаем экземпляр клиента

Мы собираем вышеуказанные параметры в массив и создаем экземпляр класса Mail следующим образом:

1 $ params = array ('host' => $ host,

2 'port' => $ port,

3 'auth' => true,

4 'username' => $ username,

5 'password '=> $ password);

6

7 $ smtp = Mail :: factory (' smtp ', $ params);

Шаг 4. Позвоните клиенту

Последний шаг — вызвать метод send () класса Mail , и мы готовы:

1 $ mail = $ smtp-> send ($ to, $ headers, $ email_body);

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

На этом этапе вы можете проверить полный окончательный код:

1

2require_once "Mail.php";

3

4 $ host = "smtp.mailgun.org";

5 $ username = "postmaster @ sandbox21a78f8 ... 3eb160ebc79.mailgun.org";

6 $ пароль = "75b958a6a0b ... dd417c80133";

7 $ порт = "587";

8 $ to = "[email protected]";

9

10 $ email_from = "[email protected]";

11 $ email_subject = "Отличная тема";

12 $ email_body = "Это тело сообщения";

13 $ email_address = "replyto @ sender. com ";

14 $ content =" text / html; charset = utf-8 ";

15 $ mime =" 1.0 ";

16

17 $ headers = array ('From' => $ email_from,

18'To '=> $ to,

19 'Subject' => $ email_subject,

20'Reply-To '=> $ email_address,

21'MIME-Version' => $ mime,

22'Content-type '=> $ content);

23

24 $ params = array ('host' => $ host,

25'port '=> $ port,

26'auth' => true,

27'username '=> $ username,

28'password '=> $ password);

29

30 $ smtp = Mail :: factory (' smtp ', $ params);

31 $ mail = $ smtp-> send ($ to, $ headers , $ email_body);

32

33if (PEAR :: isError ($ mail)) {

34echo ("

".$ mail-> getMessage (). "

");

35} else {

36echo ("

Сообщение успешно отправлено!

");

37}

Вы можете скачать полный исходный код здесь.

Далее, если вы все настроили, вы можете попробовать запустить скрипт: php mailer. php.

Вы запускаете его и получаете ужасную трассировку стека ошибок! Внимательно изучите его:

Неустранимая ошибка PHP: Неперехваченная ошибка: класс «Net_SMTP» не найден в / usr / share / php / Mail / smtp> php: 366.

Это означает, что мы забыли добавить еще одну зависимость проекта, которая необходима для использования PEAR Mail. Запустите sudo pear install Net_SMTP и попробуйте еще раз!

Результат:

Сообщение успешно отправлено!

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

Это мой тихий хлопок

Заключение

Мы видели образец сценария для начала использования Mailgun с менеджером пакетов PEAR, и мы создали сценарии PHP для отправки электронной почты с помощью SMTP и HTTP API.Но есть и другие варианты, которые вы можете использовать, если PEAR вам не подходит. Фактически вы могли бы воспроизвести тот же результат с помощью Composer, и Mailgun подробно рассказывал об этом ранее в блоге.

И, конечно же, если вы хотите улучшить свои навыки работы с PHP, это несколько моих любимых ресурсов, которые я бы порекомендовал для отправки электронной почты с помощью PHP и работы с HTML-кодом электронной почты в целом.

Как настроить параметры электронной почты WordPress (ПРАВИЛЬНЫЙ способ)

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

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

Вот содержание, если вы хотите сразу перейти к руководству:

    1. Настройка учетной записи SMTP.com
    2. Добавьте запись SPF в DNS вашего сайта
    3. Настроить WP Mail SMTP
    4. Отправка тестового электронного письма

Почему не работают настройки электронной почты WordPress по умолчанию

По умолчанию WordPress использует функцию PHP mail () для отправки своих писем. Обычно это автоматические электронные письма, такие как подтверждения регистрации, утерянные пароли или уведомления формы, которые сообщают вам, когда кто-то заполнил вашу форму.

Но что разочаровывает, WordPress печально известен тем, что у него исчезают электронные письма. И наиболее частая причина пропажи этих писем заключается в том, что ваш хостинг-сервер WordPress неправильно настроен для использования функции PHP Mail.

Итак, поскольку WordPress настроен на PHP, множество поставщиков услуг электронной почты, таких как Gmail, Yahoo и т. Д., Используют инструменты для фильтрации спама в электронной почте.И когда ваш WordPress пытается отправить электронное письмо, часто эти поставщики услуг электронной почты блокируют его. Они думают, что оно притворяется тем, чем не является, - также это называется поддельным письмом.

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

Что такое SMTP на самом деле

SMTP расшифровывается как Simple Mail Transfer Protocol.Это способ отправки электронных писем через Интернет, и это отраслевой стандарт. Если вы хотите правильно настроить параметры электронной почты WordPress, переключите их на SMTP.

SMTP обеспечивает более высокую скорость доставки электронной почты, чем PHP, особенно при использовании популярного плагина WP Mail SMTP.

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

И вы можете подключить его ко всем видам провайдеров электронной почты, например:

В этом руководстве мы покажем вам, как настроить параметры электронной почты WordPress с помощью SMTP.com. Однако вы можете использовать любую почтовую программу, какую захотите. Если вы хотите, чтобы WooCommerce не отправляла электронные письма, мы рекомендуем вам выбрать поставщика, специализирующегося на транзакционных письмах.

Как настроить параметры электронной почты WordPress

Если вы готовы правильно настроить параметры электронной почты WordPress, давайте продолжим и начнем с этого пошагового руководства.

1. Настройте учетную запись SMTP.com

Во-первых, вам нужно создать учетную запись на SMTP.com. Эта учетная запись будет подключаться к вашему сайту WordPress, чтобы правильно настроить параметры электронной почты.

Если у вас уже есть учетная запись SMTP.com, войдите в систему. Или, если у вас еще нет учетной записи, создайте ее сейчас.

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

Если вы создаете новую учетную запись на SMTP.com, вам нужно будет выполнить несколько дополнительных шагов после регистрации. Эти шаги помогают предотвратить регистрацию спамеров, что является частью того, насколько надежны их услуги.

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

Затем команда SMTP.com рассмотрит и утвердит вашу учетную запись (что может занять до 24 часов). Это одобрение, скорее всего, потребует от вас предоставить дополнительные сведения и пояснения, поэтому следите за своим почтовым ящиком.

Хорошо, как только ваша учетная запись SMTP.com будет настроена, вы будете готовы продолжить процесс настройки.

2. Добавьте запись SPF в DNS вашего сайта

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

SMTP.com использует запись SPF для аутентификации вашей электронной почты, поэтому вам необходимо добавить эту запись в настройки DNS вашего сайта. У вас есть еще вопросы о DNS или вы не знаете, что делать? Свяжитесь с провайдером хостинга вашего сайта, прежде чем вносить какие-либо изменения.

Теперь прокрутите до верхнего меню своей учетной записи SMTP.com. И перейдите в Учетная запись »Мои настройки .

Итак, затем в общих настройках вы должны увидеть запись SPF, которая выглядит так:

v = spf1 включает: _spf.smtp.com ~ все

Вам нужно будет добавить эту информацию в настройки DNS для вашего сайта. В настройках DNS вашего сайта вы также можете увидеть поле TTL (время жизни) для записи. Если у вас есть возможность редактировать это, мы рекомендуем установить TTL на 1 день (или 86400 секунд, в зависимости от единиц, используемых вашим DNS).

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

Внизу страницы есть раздел под названием SMTP.com SPF Record Domain Check. В поле Домен введите URL своего сайта. Затем нажмите кнопку Проверить .

Результат проверки отобразится в красном поле в верхней части страницы. Если SMTP.com смог успешно проверить вашу запись SPF, в этом поле будет отображаться статус «Пройден». Отличная работа!

Важно помнить, что изменение DNS иногда может занять до 48 часов.Так что вам может потребоваться проверить это позже.

Но независимо от того, какой у вашего домена статус SPF прямо сейчас, вы можете перейти к следующему шагу.

3. Настройте WP Mail SMTP

Теперь, когда ваша учетная запись SMTP.com готова к использованию, мы можем перейти к настройке WP Mail SMTP в WordPress. Если вы еще этого не сделали, обязательно установите и активируйте плагин WP Mail SMTP.

После установки и активации WP Mail SMTP нажмите WP Mail SMTP »Настройки в левом меню WordPress, чтобы увидеть настройки плагина.

Вот подробные сведения о каждой из настроек этой страницы:

С электронной почты

Электронная почта "От" - это адрес электронной почты, с которого будут отправляться все электронные письма вашего веб-сайта. Это должен быть адрес электронной почты для конкретного домена.

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

Если вы хотите, чтобы сообщение "От" было одинаковым для всего сайта, вы можете установить флажок Принудительно с адреса электронной почты .

Это избавит вас от необходимости редактировать настройки электронной почты на всем сайте (во всех формах электронной почты и т. Д.).Мы настоятельно рекомендуем вам установить этот флажок.

От имени

По умолчанию в качестве имени сайта используется имя сайта. Но вы можете изменить это на любой желаемый текст.

Вы также можете установить флажок рядом с Force From Name , чтобы применить этот параметр ко всем вашим электронным письмам на вашем сайте.

Обратный тракт

SMTP.com не поддерживает параметр Return Path , поэтому пропустите этот параметр.

WP Mail SMTP-почтовая программа

Затем в разделе Mailer нажмите кнопку SMTP.com .

Затем вам нужно ввести ключ API и имя отправителя из вашей учетной записи SMTP.com.

Мы покажем вам, что именно нужно делать, в разделах ниже. Давайте начнем с ключа API.

Ключ API:

Чтобы найти ключ API для своей учетной записи SMTP.com, щелкните ссылку Получить ключ API (или перейдите по этой ссылке).

После нажатия на эту ссылку вы должны увидеть страницу API в своей учетной записи SMTP.com. На этой странице скопируйте то, что вы видите в столбце Ключ .

Теперь, когда вы скопировали эту информацию о ключе, вернитесь к настройкам WP Mail SMTP и вставьте их в область API Key .

Имя отправителя:

Теперь, когда ваш ключ API добавлен, мы перейдем к следующему полю в настройках WP Mail SMTP. Это имя отправителя.Чтобы найти информацию, необходимую для этого поля, вам нужно будет нажать на ссылку Получить имя отправителя .

Эта ссылка должна открывать страницу отправителей вашей учетной записи SMTP.com. Здесь вам нужно будет скопировать данные в столбец Имя .

После копирования информации об имени вернитесь на вкладку настроек WP Mail SMTP. Отсюда вставьте его в поле Имя отправителя .

Теперь, когда все настройки WP Mail SMTP заполнены, нажмите кнопку Сохранить настройки .

4. Отправьте тестовое электронное письмо

Помните шаг № 2 и то, как мы ждали ответа о ваших настройках SPF?

Что ж, прежде чем делать этот следующий шаг, проверьте свои настройки возможности доставки на SMTP.com, чтобы убедиться, что для параметра SPF Status вашего сайта установлено значение Pass .

Теперь, когда настройки SMTP.com и WP Mail SMTP готовы, давайте отправим тестовое электронное письмо. Для этого перейдите на вкладку Email Test в настройках WP Mail SMTP вашего сайта.

На этой вкладке вы можете ввести любые учетные записи электронной почты, к которым у вас есть доступ, в поле Отправить на . Затем нажмите кнопку Отправить электронное письмо .

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

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

Хорошо, наконец, вам нужно подтвердить, что это тестовое письмо было правильно отправлено через ваш SMTP.com аккаунт. Для этого нажмите на эту ссылку, чтобы открыть страницу настроек доставки SMTP.com.

И если электронное письмо было успешно отправлено через ваш аккаунт SMTP.com, вы увидите статус Pass рядом с вашим доменом.

Но если вы не видите статус Pass , просмотрите шаги 1–3, чтобы убедиться, что все настроено правильно.

Последние мысли о настройках электронной почты WordPress

И вот оно! Теперь вы знаете, как правильно настроить параметры электронной почты WordPress - используя WP Mail SMTP.Это может помочь решить проблемы с уведомлениями по электронной почте Formidable Forms или Ninja Forms, которые не отправляют электронную почту.

Затем обязательно прочтите наш пост о том, почему вам всегда следует избегать плагинов WP Mail SMTP Pro с нулевым значением.

Так чего же вы ждете? Воспользуйтесь 100% гарантией возврата денег и начните работу с самым популярным в мире плагином почтовой программы SMTP и PHP уже сегодня.

И если вам понравилась эта статья, подпишитесь на нас в Facebook и Twitter, чтобы получить больше бесплатных руководств по WordPress.

Как исправить проблему, из-за которой WordPress не отправляет электронные письма в 2021 году

Распространенной проблемой среди владельцев веб-сайтов является то, что WordPress не отправляет электронные письма правильно или вообще.

Большинство управляемых хостинг-провайдеров WordPress, включая Kinsta, не предоставляют хостинг электронной почты. Однако это не означает, что вы не можете отправлять электронные письма из установленного WordPress. Обычно, когда вы пытаетесь исправить проблему, когда WordPress не отправляет электронные письма, это не проблема на сервере, а скорее электронная почта настроена неправильно при установке WordPress или существует несовместимость.

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

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

Почему WordPress не отправляет электронную почту

Есть несколько причин, по которым у вас могут быть проблемы с тем, что WordPress не отправляет электронные письма. К ним относятся:

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

1. Электронные письма отправляются, но попадают в спам

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

Если пользователь сообщает вам, что WordPress не отправляет электронные письма, возможно, его электронные письма просто отправляются в спам.

Попросите их проверить папку со спамом на наличие писем от системы. Некоторые почтовые клиенты могут идентифицировать электронные письма от WordPress как спам, поскольку они автоматизированы.

2. Ваш сервер неправильно настроен

Распространенной причиной того, что WordPress не отправляет электронные письма, является то, что ваш сервер не настроен для их отправки.

Веб-серверы

не предназначены для отправки электронных писем, и, возможно, ваш сервер не настроен для использования функции PHP mail () .

Хорошая новость заключается в том, что вы можете легко проверить, не в этом ли причина проблемы, и исправить ее.

Как проверить, отправляет ли сервер электронную почту

Первое, что вы можете сделать, это запустить тест на своем сайте WordPress с помощью бесплатного плагина Check Email.

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

После установки перейдите в Инструменты > Проверить электронную почту на панели инструментов WordPress. Введите адрес электронной почты, на который нужно отправить тест, и нажмите Отправить тестовое письмо .

Отправить тестовое электронное письмо

Вы увидите подтверждение.

Тестовое электронное письмо с подтверждением

Проверьте свой почтовый клиент, чтобы узнать, получили ли вы тестовое письмо. В строке темы будет указано «Тестовое письмо с https: // yourdomain.com. "

Получено тестовое письмо

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

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

Если вы являетесь клиентом Kinsta и используете HHVM, вы можете временно переключиться на PHP 7, чтобы проверить, есть ли проблема совместимости. Вы можете легко переключиться на PHP 7 в личном кабинете MyKinsta. После тестирования вы можете снова переключиться на HHVM.

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

Kinsta использует Google Cloud Platform, которая по умолчанию блокирует исходящие соединения на порту 25. Согласно Google, «этот исходящий порт SMTP заблокирован из-за большого количества злоупотреблений, которым этот порт подвержен». В этом случае попробуйте альтернативный порт, например 2525. Порты 587 и 465 открыты в Kinsta.

3. Ваш плагин контактной формы отправляет ложные сообщения электронной почты

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

Скорее всего это будет плагин контактной формы.

Плагины

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

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

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

У вас также могут возникнуть проблемы, если электронные письма отправляются с одного и того же адреса электронной почты. Поэтому, если ваш плагин форм отправляет электронные письма с вашего адреса электронной почты администратора (который будет по умолчанию), и вы также настроили его для отправки на этот адрес, некоторым поставщикам электронной почты это может не понравиться. Это менее вероятно, чем проблема с "поддельными" электронными письмами.

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

Затронутые плагины контактной формы

Эта проблема может затронуть любой плагин контактной формы. Вот некоторые плагины, с которыми у вас может быть эта проблема:

  • Контактная форма 7
  • Гравитационные формы
  • Формы ниндзя
  • Счастливая форма
  • weForms
  • Контактная форма Jetpack
  • Грозные формы

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

WordPress не отправляет ваши электронные письма? 😱 Узнайте, почему это происходит и как это исправить, прямо здесь ⬇Нажмите, чтобы написать в Твиттере

Как предотвратить попадание спама в электронные письма WordPress

1. Добавить адрес электронной почты в белый список

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

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

2. Используйте более безопасный адрес электронной почты

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

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

3. Настройте аутентификацию электронной почты

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

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

Как настроить SMTP в WordPress для отправки электронной почты

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

SMTP расшифровывается как Simple Mail Transfer Protocol. Он перемещает электронную почту в сети и между ними. Так что, если ваш сервер не настроен для отправки электронных писем, это сделает это возможным.

Существует несколько поставщиков SMTP на выбор, в том числе и бесплатных: это не требует каких-либо затрат, только немного времени.

Подпишитесь на информационный бюллетень

Мы увеличили наш трафик на 1187% с помощью WordPress.

Мы покажем вам, как это сделать.

Присоединяйтесь к 20 000+ другим, кто получает нашу еженедельную рассылку с инсайдерскими советами по WordPress!

Подпишись сейчас

Чтобы настроить это, следуйте нашему руководству по использованию бесплатного SMTP-сервера с WordPress.

Как настроить плагин форм для правильной отправки электронной почты

Если ваш сервер настроен на отправку электронной почты, но у вас все еще возникают проблемы с записями в формы, которые не отправляются, это, вероятно, означает, что вам нужно настроить параметры формы.

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

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

Исправить контактную форму 7, не отправляющую электронные письма

Contact Form 7 - один из старейших и самых популярных бесплатных плагинов для форм WordPress.

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

В админке WordPress перейдите в раздел Контакт> Контактные формы .

Контактные формы

Выберите созданную вами форму и откройте вкладку Mail .

Вкладка электронной почты в контактных формах

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

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

Сохраните изменения.

Теперь проверьте все, заполнив форму самостоятельно.

Исправить гравитационные формы, не отправляющие электронные письма

Gravity Forms - один из самых популярных и уважаемых плагинов премиум-форм. У вас меньше шансов столкнуться с проблемами, связанными с отправкой писем, которые не отправляются через этот плагин, чем с контактной формой 7, но если это произойдет. Подробные инструкции вы найдете в документации к плагину.

Документация гравитационных форм

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

Исправить формы ниндзя, не отправляющие электронные письма

Ninja Forms имеет как бесплатную, так и премиальную версии. Также существует множество дополнительных плагинов, которые вы можете бесплатно скачать из репозитория WordPress.

Если у вас возникли проблемы, связанные с электронной почтой с помощью Ninja Forms, рекомендуемое решение - использовать плагин SendWP, разработанный той же командой.

ОтправитьWP

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

Итак, если вы не хотите платить 9 долларов в месяц за SendWP, попробуйте следовать руководству по устранению неполадок по электронной почте в их документации.

Исправить HappyForms, не отправляющие электронные письма

HappyForms - еще один плагин с бесплатной и премиальной версией.

Happyforms

У

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

Чтобы изменить адрес электронной почты, с которого отправляются Happy Forms, вы можете изменить настройки электронной почты для отдельной формы аналогично Contact Form 7.

Перейдите на страницу HappyForms> Все формы и выберите форму, которую хотите отредактировать. Это откроет интерфейс, похожий на настройщик.

Откройте вкладку Электронная почта .

Вкладка электронной почты Happyforms

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

После внесения изменений нажмите кнопку Обновить вверху и протестируйте форму.

Исправить weForms, не отправляющие электронные письма

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

В нем есть руководство по устранению неполадок, которое поможет вам решить проблему, когда weForms не отправляет электронные письма. Следуйте инструкциям, чтобы определить источник проблемы и восстановить работу электронной почты.

Исправить контактную форму Jetpack, не отправляющую электронные письма

Если вы используете плагин Jetpack, возможно, вы используете базовую контактную форму, которая прилагается к нему. Вы делаете это, добавляя блок формы на страницу или сообщение в WordPress.

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

Поскольку Jetpack не использует поле из формы в поле To или From в электронном письме, у вас меньше шансов иметь проблемы, связанные с электронной почтой.Если у вас все же возникнут проблемы, это произойдет из-за того, что вы отправляете электронные письма на один и тот же адрес и с него.

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

Контактная форма Jetpack

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

Исправить грозные формы, не отправляющие электронные письма

Formidable Forms - еще один плагин форм с бесплатной и премиальной версией.Если у вас возникают проблемы с отправкой электронных писем из контактных форм в Formidable Forms, официальная документация рекомендует добавить SMTP на ваш сайт.

Но что, если вы уже сделали это, но все еще не работает? Что ж, опять же, это вероятно потому, что ваши электронные письма помечаются как «поддельные», потому что они отправляются с адреса, который не является настоящим адресом отправителя.

В админке WordPress перейдите в Formidable> Forms и выберите форму, которую хотите отредактировать.Щелкните вкладку Settings вверху, затем вкладку Actions & Notifications сбоку. Отсюда откройте мета-поле Уведомление по электронной почте .

Настройки уведомлений по электронной почте для сложных форм

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

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

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

Если ваши электронные письма не отправляются через WordPress, эти распространенные проблемы могут быть причиной проблемы ... 👀Нажмите, чтобы написать в Твиттере

Сводка

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

Следуйте приведенному выше руководству, чтобы определить причину, по которой ваш сайт WordPress не отправляет электронные письма, и устранить проблему. Скоро у вас должны появиться правильные электронные письма!


Если вам понравилась эта статья, то вам понравится хостинговая платформа Kinsta WordPress. Ускорьте свой сайт и получите круглосуточную поддержку от нашей опытной команды WordPress. Наша инфраструктура на базе Google Cloud ориентирована на автоматическое масштабирование, производительность и безопасность. Позвольте нам показать вам разницу в Kinsta! Ознакомьтесь с нашими тарифами

Самостоятельная отправка значений формы с использованием PHP_SELF

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

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

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

На нашей странице есть код HTML и PHP. Поэтому мы называем наш файл welcome.php . Теперь сначала мы можем создать скрипт обработчика формы на нашей странице, который будет приветствовать нашего пользователя.

  ";
echo "Ваш адрес электронной почты:". $ _POST ["электронная почта"]. "
"; } ?>

В нашем сценарии обработчика формы мы добавляем оператор if для проверки состояния кнопки отправки. Используя этот оператор if , наш PHP-скрипт отображает приветственное сообщение только после того, как пользователь отправит значение формы.

Теперь мы можем добавить нашу HTML-форму на эту же страницу.

  
Имя:
Электронная почта:

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

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

Недавние сообщения

  1. Перехватчики действий, которые срабатывают при добавлении, обновлении или удалении действий опции, до или после них - WordPress
  2. Получить все варианты переменного продукта - WooCommerce
  3. Генерировать случайную строку - Python
  4. Разделить домен из адрес электронной почты - Python
  5. Получите ближайшие N дней - PHP

Эта статья была опубликована


Ваши вопросы / комментарии

Если вы нашли эту статью интересной, обнаружили ошибки или просто хотите обсудить это, пожалуйста, свяжитесь с нами.

Проверка формата электронной почты в Php с использованием регулярных выражений

В поле ввода мы можем проверить, что введенный адрес электронной почты имеет правильный формат или нет, используя функцию PHP eregi. Это часть проверки формы php, которую мы делаем для других записей, чтобы проверить, правильно ли отформатированы данные введены пользователем или нет. Вы можете ввести любой адрес электронной почты и проверить, действительно ли это адрес. Обратите внимание, что мы не проверяем валидацию или существование URL-адреса или поставщика услуг. Мы только проверяем / подтверждаем формат электронного адреса.Этот код может использоваться как часть другой используемой проверки введенных данных. Вы можете прочитать проверку формы php, посетив руководство здесь. Вот демонстрация проверки электронной почты. Проверьте эту проверку, введя любой отформатированный адрес электронной почты. Вы получите сообщение, основанное на результате проверки.

Как получить адрес электронной почты

Посетители вводят свой адрес электронной почты в текстовое поле внутри веб-формы.
Из веб-формы мы получим адрес электронной почты с помощью метода GET или POST для сценария обработки.", $ email)) { echo "
Недействительный адрес электронной почты
"; }еще{ echo "
Действительный адрес электронной почты
"; }

Проверка наличия @ и.

Минимальное требование к любому адресу электронной почты — наличие @ и одной точки (.). Здесь мы можем проверить наличие этих двух условий и очистить или проверить переменную при наличии этих двух символов.Обратите внимание, что во многих сложных условиях эта проверка не удастся, но для простоты ее можно использовать.
 
if (! stristr ($ em, "@") OR! stristr ($ em, ".")) {
$ msg = "Ваш адрес электронной почты неверен
";
$ status = "NOTOK";
} else {
echo "Ваш электронный адрес в порядке";
}

Использование фильтра в PHP

PHP имеет встроенный фильтр, и он включен для PHP версии 5. 2.0 и новее. Используя фильтр, мы можем проверять различные другие типы данных, включая адрес электронной почты.← FILTER_VALIDATE_EMAIL Проверка электронной почты с использованием Ajax и PHP →
← Форма PHP

Эта статья написана командой plus2net.com .


plus2net.com

▼ Веб-формы и обработка данных в PHP

хорошо

22-05-2013

это интересно .. !!
albusaidy

16-11-2014

у меня отлично сработало.. Мне нравится, что страница, над которой я работал, оставалась на экране, а сценарий показывал, где нужно внести изменения. Awesome
Есть способ убедиться, что люди не заходят на www. перед их электронным письмом это часто случается.
John S

17-04-2019

Здравствуйте,
eregi () устарел с PHP 5.3
Спасибо.

Обработка форм с помощью GET, POST и REQUEST в PHP

Обработка форм — одна из распространенных задач при создании проекта на PHP.Для этого доступны различные методы, и они подходят в зависимости от ситуации.

Вы можете передать данные формы по URL и скрыть их от пользователя.


  1. $ _GET
  2. $ _POST
  3. $ _ЗАПРОС
  4. Заключение


  • Информация, отправленная из формы с помощью метода GET, видна всем (все имена и значения переменных отображаются в URL-адресе).
  • $ _GET также имеет ограничения на объем отправляемой информации. Ограничение составляет около 2000 символов.
  • Однако, поскольку переменные отображаются в URL-адресе, можно добавить страницу в закладки. В некоторых случаях это может быть полезно.
  • $ _GET может использоваться для отправки не конфиденциальных данных.

Пример

 ";
echo "email:". $ email. "
"; эхо "возраст:". $ age; } ?>
Имя:
Электронная почта:
Возраст:

  • Информация, отправляемая из формы с помощью метода POST, невидима для других и не имеет ограничений на объем отправляемой информации.
  • Более того, $ _POST поддерживает расширенные функции, такие как поддержка многостраничного двоичного ввода при загрузке файлов на сервер.
  • Однако, поскольку переменные не отображаются в URL-адресе, добавить страницу в закладки невозможно.

Пример

 ";
эхо "электронная почта:".$ email. "
"; эхо "возраст:". $ age; } ?>
Имя:
Электронная почта:
Возраст:

  • Этот метод работает как метод GET, если он используется в
    .
  • Он содержит содержимое $ _GET, $ _POST и $ _COOKIE.

Пример

 

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

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