Advertisement
Guest User

mail.php

a guest
May 1st, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.02 KB | None | 0 0
  1. <?php ini_set('display_errors','Off');
  2. $email = ''; // адрес куда отправлять письмо, можно несколько через запятую
  3. $subject = 'Новое сообщение с сайта '.$_SERVER['HTTP_HOST']; // тема письма с указанием адреса сайта
  4. $message = 'Данные формы:'; // вводная часть письма
  5. $addreply = ''; // адрес куда отвечать (необязательно)
  6. $from = ''; // имя отправителя (необязательно)
  7. $smtp = 0; // отправлять ли через почтовый ящик, 1 - да, 0 - нет, отправлять через хостинг
  8.  
  9. // настройки почтового сервера для режима $smtp = 1 (Внимание: с GMAIL не работает)
  10. $host = 'smtp.yandex.ru'; // сервер отправки писем (приведен пример для Яндекса)
  11. $username = ''; // логин вашего почтового ящика
  12. $password = ''; // пароль вашего почтового ящика
  13. $auth = 1; // нужна ли авторизация, 1 - нужна, 0 - не нужна
  14. $secure = 'ssl'; // тип защиты
  15. $port = 465; // порт сервера
  16. $charset = 'utf-8'; // кодировка письма
  17.  
  18. // дополнительные настройки
  19. $cc = ''; // копия письма
  20. $bcc = ''; // скрытая копия
  21.  
  22. $client_email = ''; // поле откуда брать адрес клиента
  23. $client_message = ''; // текст письма, которое будет отправлено клиенту
  24. $client_file = ''; // вложение, которое будет отправлено клиенту
  25.  
  26. $export_file = ''; // имя файла для экспорта в CSV
  27. $export_fields = ''; // список полей для экспорта (через запятую)
  28.  
  29. $fields = "";
  30. foreach($_POST as $key => $value){
  31.   if($value === 'on'){ $value = 'Да'; }
  32.   if($key === 'sendto'){
  33.     $email = $value;
  34.   } elseif($key === 'required_fields'){
  35.     $required = explode(',', $value);
  36.   } else {
  37.     if(in_array($key, $required) && $value === ''){ echo 'ERROR_REQUIRED'; die(); }
  38.     if(is_array($value)){
  39.       $fields .= str_replace('_',' ',$key).': <b>'.implode(', ', $value).'</b> <br />';
  40.     }else{
  41.       if($value !== ''){ $fields .= str_replace('_',' ',$key).': <b>'.$value.'</b> <br />'; }
  42.     }
  43.   }
  44. }
  45.  
  46. if($export_file !== ''){
  47.   $vars = explode(',', $export_fields);
  48.   $str_arr[] = '"'.date("d.m.y H:i:s").'"';
  49.   foreach($vars as $var_name) {
  50.     if(isset($_POST[$var_name])){ $str_arr[] = '"'.$_POST[$var_name].'"'; }
  51.   }
  52.   file_put_contents($export_file, implode(';', $str_arr)."\n", FILE_APPEND | LOCK_EX);
  53. }
  54.  
  55. smtpmail($email, $subject, $message.'<br>'.$fields);
  56. if(!empty($client_email)){
  57.   empty($client_message) ? $message .= '<br>'.$fields : $message = $client_message.'<br>'.$fields.'<br>'.date("m.d.y H:i:s");
  58.   smtpmail($_POST[$client_email], $subject, $message, true);
  59. }
  60.  
  61. function smtpmail($to, $subject, $content, $client_mode = false){
  62.  
  63. global $success, $smtp, $host, $auth, $secure, $port, $username, $password, $from, $addreply, $charset, $cc, $bcc, $client_email, $client_message, $client_file;
  64.  
  65. require_once('./class-phpmailer.php');
  66. $mail = new PHPMailer(true);
  67. if($smtp){ $mail->IsSMTP(); }
  68. try {
  69.   $mail->SMTPDebug  = 0;
  70.   $mail->Host       = $host;
  71.   $mail->SMTPAuth   = $auth;
  72.   $mail->SMTPSecure = $secure;
  73.   $mail->Port       = $port;
  74.   $mail->CharSet    = $charset;
  75.   $mail->Username   = $username;
  76.   $mail->Password   = $password;
  77.  
  78.   if(!empty($username)) $mail->SetFrom($username, $from);
  79.   if(!empty($addreply)) $mail->AddReplyTo($addreply, $from);
  80.  
  81.   $to_array = explode(',', $to); foreach ($to_array as $to){ $mail->AddAddress($to); }
  82.   if(!empty($cc)){ $to_array = explode(',', $cc); foreach ($to_array as $to){ $mail->AddCC($to); }}
  83.   if(!empty($bcc)){ $to_array = explode(',', $bcc); foreach ($to_array as $to){ $mail->AddBCC($to); }}
  84.  
  85.   $mail->Subject = htmlspecialchars($subject);
  86.   $mail->MsgHTML($content);
  87.  
  88.   if($client_mode){
  89.     $mail->AddAttachment($client_file);
  90.   }elseif(!$client_mode){
  91.     if($_FILES['file']['name'][0] !== '') {
  92.       $files_array = reArrayFiles($_FILES['file']);
  93.       if( $files_array !== false ){
  94.       foreach ($files_array as $file) {
  95.           $mail->AddAttachment($file['tmp_name'],$file['name']);
  96.       }}
  97.     }
  98.   }
  99.  
  100.   $mail->Send();
  101.   if(!$client_mode) echo('success');
  102.  
  103. } catch (phpmailerException $e) {
  104.   echo $e->errorMessage();
  105. } catch (Exception $e) {
  106.   echo $e->getMessage();
  107. }
  108. }
  109.  
  110. function reArrayFiles(&$file_post) {
  111.     if($file_post === null){ return false; }
  112.     $files_array = array();
  113.     $file_count = count($file_post['name']);
  114.     $file_keys = array_keys($file_post);
  115.     for ($i=0; $i<$file_count; $i++) {
  116.         foreach ($file_keys as $key) {
  117.             $files_array[$i][$key] = $file_post[$key][$i];
  118.         }
  119.     }
  120.     return $files_array;
  121. }
  122. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement