Использование службы SMTP для отправки e-mail из приложений PHP
Вторник, 01 июня 2010 07:27

Использование службы SMTP для отправки e-mail из приложений PHP

Оцените материал
(2 голосов)

e-mailВ данной статье рассмотрим примеры использования служб SMTP для отправки автоматических сообщений e-mail из приложений PHP. E-mail посылается с сервера Web через его службу простого протокола пересылки почты SMTP. Как и предполагает название, это ограниченная в возможностях служба e-mail, однако ее достаточно для создания автоматических сообщений e-mail. Необходимо отметить, что требуется сервер SMTP, чтобы можно было воспользоваться функциями e-mail в PHP. В операционных системах XP Professional, Windows 2000 server и Windows 2003 server службы SMTP объединены с информационными службами Интернет (IIS). В Linux/Unix популярными пакетами SMTP являются Sendmail и Qmail.

При выполнении PHP на сервере с помощью служб SMTP IIS, может понадобиться сконфигурировать его, чтобы разрешить пересылку сообщений e-mail. Выполните следующие действия.

1. Откройте инструменты администрирования IIS

2. Остановите используемую по умолчанию службу виртуального сервера SMTP.

3. Откройте окно свойств используемого по умолчанию виртуального сервера SMTP.

4. Щелкните на вкладке "Access" и нажмите кнопку "Relay...".

5. Нажмите кнопку "Only the list below" и добавьте один компьютер с IP-адресом 127.0.0.1.

6. Нажмите кнопку "OK", чтобы закрыть окно вкладок и свойств "Access".

7. Перезапустите используемую по умолчанию службу виртуального сервера SMTP.

Необходимо также сделать следующие изменения в конфигурационном файле PHP — php.ini – чтобы система PHP могла использовать службы SMTP. Откройте файл php.ini с помощью текстового редактора и найдите следующие строки:

[mail function]

;For Win32 only

SMTP = localhost

;For Win 32 only

sendmail_from = Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.

Необходимо изменить директиву SMTP, чтобы она указывала на используемый сервер SMTP. Если используются локальные службы SMTP, то это значение должно быть задано как localhost. Вторая директива sendmail_from является адресом email, применяемым в заголовке From исходящей почты e-mail. Должна быть задана действительная учетная запись e-mail, если пользователям будет разрешено отвечать на автоматически создаваемые сообщения e-mail.

В PHP имеется функция mail() для отправки e-mail. Эта функция определена ниже:

mail(string_to, string_subject, string_message,string_additional_headers) – позволяет посылать сообщение e-mail. Возвращает true, если сообщение успешно послано, иначе возвращается значение false.

Следующий пример демонстрирует использование функции mail():

<?php

$to = Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.';

$subject = 'PHP Mail';

$msg = 'hello';

$headers = 'From: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.' . "\r\n" .

'Reply-To: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.' . "\r\n" .

'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $msg, $headers);

?>

Первый шаг состоит в создании переменной для хранения адреса e-mail, куда будет послано сообщение:

$to ="Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.";

Это может быть любой действительный адрес e-mail. Несколько адресов e-mail должны разделяться запятой ",".

Переменная $subject содержит тему сообщения e-mail. Эта строка появится в строке subject (тема) сообщения.

$subject="PHP Mail";

Основное содержание тела сообщения e-mail присваивается переменной $msg. Если потребуется, то можно соединять несколько переменных $msg вместе. Это часто бывает нужно, когда посылается длинное описательное сообщение.

$msg = "Сообщение, созданное с помощью функции PHP mail().";

Затем создаются заголовки e-mail и присваиваются переменной $headers. Заголовки e-mail являются строками в начале сообщений e-mail, которые определяют их структуру и делают их, по сути, действительными почтовыми адресами. Хотя функция mail() может использоваться без заголовков, рекомендуется включать заголовки "From:" и "Reply-To:"

$headers = "From: My Web Site <Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.>";

$headers .= "Reply-To: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.";

Наконец, вызывается функция mail() для отправки сообщения:

mail($to,$subject,$msg, $headers);

В большинстве случаев параметры to, subject, и message функции mail() не кодируются жестким образом, как показано в предыдущем примере. Вместо этого они подставляются динамически в результате ввода пользователя. Например, рассмотрим страницу, которая позволяет пользователю электронным образом регистрироваться для получения товара или услуги. Пользователь вводит имя, фамилию, адрес e-mail, и номер телефона. Эта информация передается на страницу PHP, которая анализирует информацию и посылает пользователю подтверждающее сообщение e-mail. Следующий пример демонстрирует этот процесс:

<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">

http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>

<title>Страница Web </title>

</head>

<body>

<h3> Страница регистрации </h3>

<form name="registration" method="post" action="email.php">

First Name: <input type="text" name="fname"/>

Last Name: <input type="text" name="lname"/>

Email Address: <input type="text" name="email"/>

Telephone: <input type="text" name="telephone"/>

<input type="submit" name="Submit Registration"/>

</form>

</body>

</html>

Страница registration.htm является стандартной страницей формы XHTML, которая позволяет пользователю вводить имя, фамилию, адрес e-mail и номер телефона. Когда нажимается кнопка "Submit Registration", данные формы передаются на страницу PHP email.php как переменные PHP $_POST[]:

$_POST['fname'] – содержит имя пользователя

$_POST['lname'] – содержит фамилию пользователя

$_POST['email'] – содержит адрес e-mail пользователя

$_POST['telephone'] – содержит номер телефона пользователя

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

<?php

$to = $_POST[email];

$subject = "Подтверждение регистрации";

$msg = "Дорогой: " . $_POST[fname] . " " . $_POST[lname] . ",\n\n";

$msg .= "Вы успешно зарегистрировались.";

$headers = "From: Registration Site <Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.>";

$headers .= "Reply-To: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.";

mail($to, $subject, $msg, $headers);

?>

Страница email.php получает значения из суперглобального массива $_POST[] (содержащего значение, отправленные из registration.htm) и присваивает их скалярным переменным, с которыми будет проще работать. Затем создаются заголовки e-mail и вызывается функция mail(). Скалярные переменные передают функции необходимые параметры.

Прочитано 4158 раз Последнее изменение Понедельник, 21 октября 2019 02:37