Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Скрипт отправки почты 2,0
 
 автор: xxxleoxxx   (03.06.2010 в 00:29)   письмо автору
 
 

Учел ваши замечания и переработал.


<?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))), 040'utf-8');
      
$name_to mb_substr(htmlspecialchars(stripcslashes(trim($name_to))), 040'utf-8');
      
$subject mb_substr(htmlspecialchars(stripcslashes(trim($subject))), 0200'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);
}
}

?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования