Порой возникает необходимость пересылать все письма, которые приходят на одну из ваших электронных почт, на другую почту, в автоматическом режиме. Чтобы было понятнее, вот пример. У вас есть почта на Яндекс и на Google (Gmail). Почтой GMail вы пользуетесь постоянно, это ваша основная почта, а Яндекс время от времени. Так вот, чтобы не заходить периодически на вашу почту Яндекс, вы можете сделать так, чтобы письма оттуда пересылались на GMail автоматически и тогда вам вообще не придётся заходить в аккаунт Яндекса для очередной проверки новых писем.
В этой статье я покажу, как настроить пересылку писем с одной почты на другую на примере разных почтовых сервисов.
Всё это одинаково работает во всех почтовых сервисах, отличие лишь в их интерфейсах, т.е. соответствующие настройки располагаются по-разному.
Ранее, в серии статей мной был рассмотрен ещё один способ получения писем на нужную почту с других почт. Он заключается в том, что вы не настраиваете автоматическую пересылку писем, о которой я сегодня расскажу, а подключаете в настройках нужный почтовый ящик (функция называетс «Сбор почты»), например, по протоколу POP3 и оттуда начинается постоянный сбор новых писем. Способ схож, но в некоторых случаях настроить его получается сложнее, чем обычную пересылку.
Если интересен способ именно сбора почты, то об этом рассказано в соответствующих статьях: сбор в GMail , в Яндекс , в Mail.ru
Ниже я подробно покажу, как настроить пересылку писем с почты Яндекс. А затем кратко затрону ещё 2 почтовых сервиса (GMail и Mail.ru), на которых всё выполняется аналогично, с отличием лишь в интерфейсе.
Настройка пересылки писем с Яндекс на любую другую почту
Перейдите в настройки почты и выберите “Правила обработки писем” .
Нажмите “Создать правило”.
Теперь нашей задачей будет создать правило, по которому почтовый сервис будет определять, что все письма нужно передавать на другой адрес, который вы укажете.
Если вы хотите, чтобы пересылались ещё и те письма, которые отмечаются как “Спам”, то на Яндекс придётся создать 2 отдельных правила.
Создание 1-го обязательного правила. Пересылка всех писем кроме спама
В настройках правила удалите условие “Если”, которое будет добавлено изначально, нажав на крестик рядом с ним. Потому что условий для выборки каких-то определённых писем нам задавать не нужно. Ведь пересылать будем всё, что приходит на почту во «Входящие».
Вверху , где настраивается, для каких писем применять создаваемое правило должно быть выбрано “ко всем письмам, кроме спама” и “с вложениями и без вложений”.
Ниже поставьте галочку “Переслать по адресу” и укажите ту вашу почту, на которую хотите пересылать все письма с текущей открытой почты. Также включите опцию “Сохранить копию при пересылке”.
Нажмите кнопку “Создать правило”.
Яндекс запросит от вас ввод пароля. Ведите свой пароль от текущей почты и нажмите “Подтвердить”.
Правило будет создано, но вы увидите надпись “Ждём подтверждения адреса” рядом с ним.
Теперь вам нужно перейти в ту почту, которую вы указали для пересылки писем и подтвердить пересылку туда. Это делается в почтовых сервисах для того, чтобы вы не смогли пересылать письма на какие попало адреса, к которым не имеете доступа.
В той почте найдите письмо от “Яндекс.Почта”, откройте его и перейдите оттуда по ссылке.
Нажмите “Подтвердить пересылку”.
Готово! Теперь все письма, которые попадают на вашей второй почте (Яндекс) в папку “Входящие” будут автоматически пересылаться на вашу основную почту, которую вы указали в правиле.
Обратите внимание! Согласно созданному выше правилу, письма из папки “Спам” пересылаться не будут! Потому что в правиле указано “ко всем письмам, кроме спама”, а сразу включить в правило и “Спам” не получится, потому что пересылка для спамовых писем не работает и вы бы получили ошибку “Для писем из папки “Спам” пересылка писем с помощью фильтра невозможна”.
Но можно сделать, чтобы спам тоже пересылался. Для этого нужно создать ещё одно правило, которое будет перекладывать автоматически весь спам в папку “Входящие”. Поэтому, если вам нужно пересылать и спам тоже, то смотрите ниже информацию о создании 2-го правила.
Иногда в спам попадают нужные письма, поэтому если совсем не планируете заходить и проверять вторую вашу почту, рассчитывая только на автоматическую пересылку писем оттуда, то я рекомендую обязательно настроить пересылку спамовых писем в том числе!
Создание 2-го правила. Если нужно пересылать “Спам”
Создаём ещё одно правило.
Здесь нам нужно указать, что все письма, которые отмечаются сервисом как “Спам” должны перекладываться во входящие.
Для этого вверху, где “Применять” выберите “только к спаму” и “с вложениями и без вложений”.
Удалите условие “Если” , оно по-прежнему нам здесь не нужно.
Отметьте пункт “Положить в папку” и выберите “Входящие”.
Нажмите “Создать правило” .
Правило готово!
После всех проделанных манипуляций, все письма, которые приходят к вам на вторую почту (где настраивали пересылку) будут обрабатываться согласно созданным правилам. То есть, если на почту пришло письмо, которое сервис определил как спам, то это письмо автоматически будет помещено во входящие, согласно созданному правилу №2 (если вы решили его настроить). А всё что находится в папке “Входящие”, в свою очередь, будет уже пересылаться на указанную вами почту, согласно правилу №1.
Настройка пересылки на примере почты Mail.ru
Перейдите в настройки почты и выберите раздел “Правила фильтрации”.
Выберите “Добавить пересылку”.
Укажите, на какой адрес пересылать письма и нажмите “Сохранить”.
Подтвердите своё действие, введя пароль от своей почты Mail.ru.
Перейдите на ту почту, куда будете пересылать письма, найдите там письмо от Mail.ru и кликните по ссылке из письма (это нужно чтобы подтвердить пересылку).
В следующем окне нажмите “Подтвердить” и появится сообщение, что пересылка подтверждена.
На почте Mail.ru вернитесь в раздел “Правила фильтрации” и включите пересылку:
Если нужно пересылать и письма, помеченные как “Спам”, то нужно создать такое же правило, как в примере с почтой Яндекс. В разделе “Правила фильтрации” добавьте новое правило, где укажите вот такие настройки.
Одной из самых востребованных функций на сайте является форма заявки или заказа, данные из которой отправляются на почту владельцу сайта. Как правило такие формы являются простыми и состоят из двух трех полей для ввода данных. Как же создать такую форму заказа? Здесь потребуется использование языка разметки HTML и языка программирования PHP.
Язык разметки HTML сам по себе несложен, нужно всего лишь разобраться в том как и где ставить те или иные теги. С языком программирования PHP все немного сложнее.
Для программиста создать такую форму не составит труда, а вот HTML верстальщику может показаться сложным некоторые действия.
Создаем форму отправки данных в html
Первая строка будет следующей
Теперь соберем все вместе.
Теперь сделаем так, чтобы поля в форме стали обязательными для заполнения. Имеем следующий код:
Создаем файл, принимающий данные из HTML формы
Это будет файл с именем send.php
В файле на первом этапе нужно принять данные из пост массива. Для этого создаем две переменные:
$fio = $_POST["fio"];
$email = $_POST["email"];
Перед названиями переменных в php ставиться знак $, в конце каждой строки ставиться точка с запятой. $_POST это массив в который передаются данный из формы. В форме html при этом указан метод отправки method="post". Так, приняты две переменные из формы html. Для целей защиты своего сайта нужно провести эти переменные через несколько фильтров - функций php.
Первая функция преобразует все символы, которые пользователь попытается добавить в форму:
При этом новые переменные в php не создаются, а используются уже имеющиеся. Что сделает фильтр, он преобразует символ "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
Вторая функция декодирует url, если пользователь попытается его добавить в форму.
$fio = urldecode($fio);
$email = urldecode($email);
Третей функцией мы удалим пробелы с начала и конца строки, если таковые имеются:
$fio = trim($fio);
$email = trim($email);
Существуют и другие функции, позволяющие отфильтровать переменные php. Их использование зависит от того, насколько вы опасаетесь того, что злоумышленник попытается добавить программный код в данную форму отправки данных на почту html.
Проверка данных, передаваемых от HTML формы в файл PHP
Для того, чотбы проверить, работает ли этот код, передаются ли данные можно просто их вывести на экран при помощи функции echo:
echo $fio;
echo "
";
echo $fio;
Вторая строка здесь нужна для того, чтобы разделить вывод переменных php на разные строки.
Отправляем полученные данные из формы HTML на почту при помощи PHP
Для отправки данных на почту нужно воспользоваться функцией mail в PHP.
mail("на какой адрес отправить", "тема письма", "Сообщение (тело письма)","From: с какого email отправляется письмо \r\n");
Например, нужно отправить данные на email владельца сайта или менеджера [email protected].
Тема письма должна быть понятной, а сообщение письма должно содержать то, что указал пользователь в HTML форме.
mail("[email protected]", "Заявка с сайта", "ФИО:".$fio.". E-mail: ".$email ,"From: [email protected] \r\n");
Необходимо добавить условие, которе проверит отправилась ли форма при помощи PHP на указанные адрес электронной почты.
if (mail("[email protected]", "Заказ с сайта", "ФИО:".$fio.". E-mail: ".$email ,"From: [email protected] \r\n"))
{
echo "сообщение успешно отправлено";
} else {
}
Таким образом программный код файла send.php, который отправит данные HTML формы на почту будет выглядеть следующим образом:
$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = trim($fio);
$email = trim($email);
//echo $fio;
//echo "
";
//echo $email;
if (mail("[email protected]", "Заявка с сайта", "ФИО:".$fio.". E-mail: ".$email ,"From: [email protected] \r\n"))
{ echo "сообщение успешно отправлено";
} else {
echo "при отправке сообщения возникли ошибки";
}?>
Три строки для проверки, передаются ли данные в файл закомментированы. При необходимости их можно удалить, так как они нужны были только для отладки.
Помещаем HTML и PHP код отправки формы в один файл
В комментариях к этой статье многие задают вопрос о том, как сделать, чтобы и HTML форма и PHP код отправки данных на почту находились в одном файле, а не двух.
Для реализации такой работы нужно поместить HTML код формы в файл send.php и добавить условие, которое будет проверять наличие переменных в массиве POST (этот массив передается из формы). То есть, если переменные в массиве не существуют, то нужно показать пользователю форму. Иначе нужно принять данные из массива и отправить их адресату.
Давайте посмотрим как изменить PHP код в файле send.php:
//проверяем, существуют ли переменные в массиве POST
if(!isset($_POST["fio"]) and !isset($_POST["email"])){
?> } else {
//показываем форму
$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = trim($fio);
$email = trim($email);
if (mail("[email protected]", "Заявка с сайта", "ФИО:".$fio.". E-mail: ".$email ,"From: [email protected] \r\n")){
echo "Сообщение успешно отправлено";
} else {
echo "При отправке сообщения возникли ошибки";
}
}
?>
Существование переменной в POST массиве мы проверяем PHP функцией isset(). Восклицательный знак перед этой функцией в условии означает отрицание. То есть, если переменной не существует, то нужно показать нашу форму. Если бы я не поставил восклицательный знак, то условие дословно означало бы - "если существует, то показать форму". А это неправильно в нашем случае. Естественно, что вы можете переименовать его в index.php. Если будуту переименовывать файл, то не забудьте переименовать название файла и в строке