diff --git a/~/PHP/README.md b/~/PHP/README.md index c44a1ff..da2ca63 100644 --- a/~/PHP/README.md +++ b/~/PHP/README.md @@ -9,6 +9,7 @@ - [`json_decode`](json_decode.php) - Декодирует строку JSON - [`json_encode`](json_encode.php) - Возвращает JSON-представление данных - [`SQLite3`](sqlite3.php) - Простой использования класса SQLite3 +- [`mail`](mail.php) - Отправляет электронную почту ## Libs - [`Fenom`](Fenom.md) - fenom diff --git a/~/PHP/mail.php b/~/PHP/mail.php new file mode 100644 index 0000000..e04593b --- /dev/null +++ b/~/PHP/mail.php @@ -0,0 +1,111 @@ + + User , Another User + + subject + Тема отправляемого письма. + Предостережение + Тема должна соответствовать RFC 2047. + + message + Отправляемое сообщение. + Каждая строка должна быть отделена символом CRLF (\r\n). + Строки не должны быть длиннее 70 символов. + additional_headers (необязательный) + Строка или массив, которые будут вставлены в конец отправляемых заголовков письма. + Обычно используется для добавления дополнительных заголовков (From, Cc, and Bcc). + Несколько дополнительных заголовков должны быть разделены CRLF (\r\n). + Если для составления этого заголовка используются внешние данные, + то они должны быть проверены для избежания инъекций нежелательных заголовков. + Если передан массив, то его ключи будут именами заголовка, а значения значениями. + additional_params (необязательный) + Параметр additional_params может быть использован для передачи дополнительных флагов + в виде аргументов командной строки для программы сконфигурированной для отправки писем, + указанной директивой sendmail_path. Например, можно установить отправителя письма + при использовании sendmail с помощью опции -f. + Параметр автоматически экранируется функцией escapeshellcmd(), + чтобы не допустить выполнение команд. Но escapeshellcmd() + позволяет добавлять дополнительные параметры. В целях безопасности рекомендуется проверять + и очищать этот параметр. + Так как escapeshellcmd() применяется автоматически, то нельзя использовать некоторые символы, + допустимые к использованию в email-адресах некоторыми RFC. mail() не допускает такие символы, + поэтому в программах, в которых они требуются, рекомендуется использовать альтернативы + для их отправки (например фреймворки или библиотеки). + Пользователь, под которым работает веб-сервер должен быть добавлен в список доверенных + в конфигурации sendmail для того чтобы избежать добавления заголовка 'X-Warning' + при указании отправителя с помощью опции (-f). Для пользователей sendmail + - это файл /etc/mail/trusted-users. + + Возвращает true, если письмо было принято для передачи, иначе false. + */ + + $to = 'nobody@example.com'; + $subject = 'the subject'; + $message = 'hello'; + $headers = 'From: webmaster@example.com' . "\r\n" . + 'Reply-To: webmaster@example.com' . "\r\n" . + 'X-Mailer: PHP/' . phpversion(); + + mail($to, $subject, $message, $headers); + + + /* Пример: Отправка HTML-сообщения */ + + // несколько получателей + $to = 'johny@example.com, sally@example.com'; // обратите внимание на запятую + + // тема письма + $subject = 'Birthday Reminders for August'; + + // текст письма + $message = ' + + + Birthday Reminders for August + + +

Here are the birthdays upcoming in August!

+ + + + + + + + + + +
PersonDayMonthYear
Johny10thAugust1970
Sally17thAugust1973
+ + + '; + + // Для отправки HTML-письма должен быть установлен заголовок Content-type + $headers = 'MIME-Version: 1.0' . "\r\n"; + $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; + + // Дополнительные заголовки + $headers[] = 'To: Mary , Kelly '; + $headers[] = 'From: Birthday Reminder '; + $headers[] = 'Cc: birthdayarchive@example.com'; + $headers[] = 'Bcc: birthdaycheck@example.com'; + + // Отправляем + mail($to, $subject, $message, implode("\r\n", $headers)); +?>