|
|
|
| Учел ваши замечания и переработал.
<?php
header('Content-type: text/html; charset=utf-8');
function send_email($name_from, // имя отправителя
$email_from, // email отправителя
$name_to, // имя получателя
$email_to, // email получателя
$subject, // тема письма
$body, // текст письма
$bcc // Слепая копия нескольким абонентам, нумерованый массив, необязательный параметр
) {
//Проверяем заполнение обязательных значений, помещаем в массив для последующей выдачи пользователю
if(empty($name_from)) $error['namefrom'] = 1;
if(empty($email_from)) $error['email_from'] = 1;
if(empty($name_to)) $error['name_to'] = 1;
if(empty($email_to)) $error['email_to'] = 1;
if(empty($subject)) $error['subject'] = 1;
if(empty($body)) $error['body'] = 1;
//проверяем правильность заполнения поля e-mail
if(!preg_match("/^[a-z0-9\.\-_]+@[a-z0-9\-_]+\.([a-z0-9\-_]+\.)*?[a-z]+$/is", $email_from)) $error['$email_from'] = 1;
if(!preg_match("/^[a-z0-9\.\-_]+@[a-z0-9\-_]+\.([a-z0-9\-_]+\.)*?[a-z]+$/is", $email_to)) $error['$email_to'] = 1;
if(!empty($bcc)) { foreach($bcc as $val) if(!preg_match("/^[a-z0-9\.\-_]+@[a-z0-9\-_]+\.([a-z0-9\-_]+\.)*?[a-z]+$/is", $email_to)) $error['$bcc'] = 1; }
if(empty($error))
{
//Убираем лишние пробелы, превращаем html в сущности
$name_from = mb_substr(htmlspecialchars(stripcslashes(trim($name_from))), 0, 40, 'utf-8');
$name_to = mb_substr(htmlspecialchars(stripcslashes(trim($name_to))), 0, 40, 'utf-8');
$subject = mb_substr(htmlspecialchars(stripcslashes(trim($subject))), 0, 200, 'utf-8');
//Кодируем заголовки в MIME base64
$from = '=?utf-8?B?'.base64_encode($name_from).'?=';
$to = '=?utf-8?B?'.base64_encode($name_to).'?= <'.$email_to.'>';
$subject = '=?utf-8?B?'.base64_encode($subject).'?=';
//Состовляем заголовки
$headers = "From: ".$from." <".$email_from.">\r\n";
$headers .= "Content-type: text/plain; charset=utf-8\r\n";
$headers .= "Mime-Version: 1.0\r\n";
//Добовляем заголовок со слепыми копиями, если задан необязательный параметр $bcc(нумерованный массив)
if(!empty($bcc_clean)) foreach($bcc_clean as $val) $headers .= "Bcc: $val\r\n";
//Отправляем
return mail($to, $subject, $body, $headers);
}
}
?>
|
| |
|
|