add php mail

This commit is contained in:
Alexander Popov 2022-07-01 02:55:05 +03:00
parent cadf9f6353
commit f7ea46f56b
2 changed files with 112 additions and 0 deletions

View File

@ -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

111
~/PHP/mail.php Normal file
View File

@ -0,0 +1,111 @@
<?php
/*
mail(
string $to,
string $subject,
string $message,
array|string $additional_headers = [],
string $additional_params = ""
): bool
*/
/*
to
Получатель, или получатели письма.
Формат этого параметра должен соответствовать RFC 2822. Несколько примеров:
user@example.com
user@example.com, anotheruser@example.com
User <user@example.com>
User <user@example.com>, Another User <anotheruser@example.com>
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 = '
<html>
<head>
<title>Birthday Reminders for August</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
<tr>
<th>Person</th><th>Day</th><th>Month</th><th>Year</th>
</tr>
<tr>
<td>Johny</td><td>10th</td><td>August</td><td>1970</td>
</tr>
<tr>
<td>Sally</td><td>17th</td><td>August</td><td>1973</td>
</tr>
</table>
</body>
</html>
';
// Для отправки HTML-письма должен быть установлен заголовок Content-type
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Дополнительные заголовки
$headers[] = 'To: Mary <mary@example.com>, Kelly <kelly@example.com>';
$headers[] = 'From: Birthday Reminder <birthday@example.com>';
$headers[] = 'Cc: birthdayarchive@example.com';
$headers[] = 'Bcc: birthdaycheck@example.com';
// Отправляем
mail($to, $subject, $message, implode("\r\n", $headers));
?>