Как отправить письмо с помощью PHP. Функция mail

  Александр Маврин   Комментариев нет

отправка письма php пример

Всем привет. Рассмотрим варианты отправки и получение писем на PHP. Кстати, я уже публиковал пост на тему создания простой контактной формы для сайта. В этот раз рассмотрим отправку писем на почту более детально, так как в большинстве мой сайт читают новички. Но прежде, чем приступить к написанию скрипта отправки писем на PHP, нам нужна форма, с которой будут собираться данные. Для примера я возьму Bootstrap и сделаю несколько полей, а именно:

  • Для ввода email адреса отправителя
  • Тема сообщения
  • Поле ввода сообщения

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

1
2
3
4
5
6
7
8
9
10
11
12
13
<form class="my-form" action="" method="post">
  <small>* Все поля обязательны для заполнения</small>
  <div class="form-group">
    <input type="email" class="form-control" name="email" placeholder="Ваш email" required/>
  </div>
  <div class="form-group">
    <input type="text" class="form-control" name="theme" placeholder="Тема сообщения" required/>
  </div>
  <div class="form-group">
    <textarea class="form-control" rows="3" name="message" placeholder="Введите сообщение" required></textarea>
  </div>
  <button type="submit" class="btn btn-warning" name="submit">Отправить</button>
</form>

Теперь напишем сам скрипт отправки писем. Это можно сделать прямо в этом файле, но лучше будет вынести обработчик в отдельный. MySql нам не нужен. Для каждого поля нужно создать переменную и присвоить им значения глобального массива POST, то есть то, что мы прописали до этого в атрибутах name. Отправлять будем письмо в HTML формате, поэтому создадим небольшую таблицу, в которую и поместим все данные полей плюс дополнительно напишем откуда была произведена отправка. К примеру со страницы Спасибо за комментарий. В итоге письмо должно прийти на почту в таком виде:

Информация
ОткудаСтраница спасибо за комментарий
Адресатlogin@example.com
ТемаТема письма
СообщениеПисьмо с сайта

Простой скрипт отправки писем PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
< ?php
$to = "<myemail@example.com>";
$email = $_POST['email'];
$subject = $_POST["theme"];
$page = 'Страница спасибо за комментарий'; 
$message = '
<html>
<body>
<center>	
<table border=1 cellpadding=6 cellspacing=0 width=90% bordercolor="#DBDBDB">
 <tr><td colspan=2 align=center bgcolor="#E4E4E4"><b>Информация</b></td></tr>
 <tr>
  <td><b>Откуда</b></td>
  <td>'.$page.'</td>
 </tr>
 <tr>
  <td><b>Адресат</b></td>
  <td><a href="mailto:'.$email.'">'.$email.'</a></td>
 </tr>
 <tr>
  <td><b>Тема</b></td>
  <td>'.$subject.'</td>
 </tr>
 <tr>
  <td><b>Сообщение</b></td>
  <td>'.$_POST['message'].'</td>
 </tr>
</table>
</center>	
</body>
</html>'; 
$headers  = "Content-type: text/html; charset=utf-8\r\n";
if (!empty($email) && !empty($subject) && !empty($message)) {
$result = mail($to, $subject, $message, $headers);
}	
if ($result) {
	echo '<div class="alert alert-success alert-dismissible fade show" role="alert">
  <strong>Сообщение успешно отправлено!</strong> Вы можете закрыть это сообщение.
  <button type="button" class="close" data-dismiss="alert" aria-label="Close">
    <span aria-hidden="true">&times;</span>
  </button>
</div>';
}else{
	echo '<div class="alert alert-danger alert-dismissible fade show" role="alert">
  <strong>Сообщение не отправлено!</strong> Попробуйте еще раз.
  <button type="button" class="close" data-dismiss="alert" aria-label="Close">
    <span aria-hidden="true">&times;</span>
  </button>
</div>';
}
?>

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

c 7 по 31 строки — шаблон HTML письма

32 — указание типа письма и его кодировка

33 — проверка на пустые поля

С 36 строки и до конца идет условие. Если произошла успешная отправка, то будет выведено уведомление об успешной отправке в виде зеленого алерта (бутстрап). В противном случае будет выведено сообщение об ошибке.

 форма отправки писем php

Что делать, если не приходят письма через mail PHP

Для начала проверить все ли правильно вы сделали. Скажу сразу, что с локального сервера никакой отправки вы не увидите. Данные просто записываются в лог-файл. Если вы это делаете на реальном хостинге, то ваш хостер мог заблокировать почтовый модуль из-за подозрения на рассылку спама. Так было у меня несколько раз, когда был взлом и распространили кучу вирусов. Попробуйте написать в поддержку. И как вы уже поняли, этот PHP скрипт не подходит для массовой рассылки, для таких целей используют SMTP, но об этом мы поговорим в другой раз. Так же в будущем рассмотрим способ отправки писем через Ajax, с вложениями (картинки, файлы и пр.) при помощи PHPMailer. И как обычно можете скачать готовое решение по прямой ссылке.

СКАЧАТЬ

Добавить страницу в закладки

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

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