Last active
August 12, 2020 21:47
-
-
Save RuslanAsadov/f8e4671139f2c33c6cad895cc3cc93a8 to your computer and use it in GitHub Desktop.
Attachments mail php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
include 'PHPMailer.php'; | |
use PHPMailer\PHPMailer\PHPMailer; | |
use PHPMailer\PHPMailer\Exception; | |
/* | |
К форме добавить класс = js-form | |
<input type="hidden" name="action" value="Название формы которое будет ниже"> | |
везде прописать name и получать ниже как в образце | |
*/ | |
/* | |
Вывод сообщения об ошибки для AJAX | |
*/ | |
function out_er($str = ''){ | |
$data = [ | |
'status' => 'error', | |
'message' => $str | |
]; | |
$data = json_encode($data,JSON_UNESCAPED_UNICODE); | |
echo $data; | |
die(); | |
} | |
/* | |
Вывод сообщения об удаче для AJAX | |
*/ | |
function out_success($str = ''){ | |
$data = [ | |
'status' => 'success', | |
'message' => $str | |
]; | |
$data = json_encode($data,JSON_UNESCAPED_UNICODE); | |
echo $data; | |
die(); | |
} | |
function parse_files_send($files) { | |
$parsed = []; | |
foreach($files as $file) { | |
$uploadfile = tempnam(sys_get_temp_dir(), sha1($file['name'])); | |
$filename = $file['name']; | |
if (move_uploaded_file($file['tmp_name'], $uploadfile)) { | |
$parsed[$filename] = $uploadfile; | |
} | |
} | |
return $parsed; | |
} | |
/* | |
Отправка e-mail сообщения администратору | |
*/ | |
function send_mail($message,$sub = null, $files = []){ | |
//тема сообщения | |
$sub = is_null($sub) ? "Новая заявка на сайте ".$_SERVER['HTTP_HOST'] : $sub; | |
//кому отправляем - получаем из доп.опции | |
$to = get_field('pochta_dlya_priema_zayavok','options'); | |
//от кого сообщение (генерируется автоматически) | |
$from = "robo@{$_SERVER['HTTP_HOST']}"; | |
$email = new PHPMailer(); | |
$email->IsHTML(true); | |
$email->SetFrom($from); //Name is optional | |
$email->Subject = $sub; | |
$email->Body = $message; | |
$email->AddAddress( $to ); | |
$email->CharSet = 'UTF-8'; | |
// $email->setLanguage('ru'); | |
// $send = mail( | |
// $to, | |
// $sub, | |
// $message, | |
// "Content-type:text/html; charset = utf-8\r\nFrom:$from" | |
// ); | |
$path_files = parse_files_send($files); | |
foreach($path_files as $filename => $uploadfile) { | |
$email->addAttachment($uploadfile, $filename); | |
} | |
if($email->Send()){ | |
return true; | |
}else{ | |
return false; | |
} | |
} | |
/* | |
Формализация двумерного массива в html таблицу | |
*/ | |
function construct_table($arr){ | |
$str = '<style>table{padding:15px;}</style>'."\r\n".'<table border="1">'."\r\n"; | |
foreach($arr as $row){ | |
$str .= ' <tr>'."\r\n"; | |
foreach($row as $col) | |
$str .= " <td>$col</td>"."\r\n"; | |
$str .= ' </tr>'."\r\n"; | |
} | |
$str .= '</table>'."\r\n"; | |
return $str; | |
} | |
//название всех форм на сайте. Будет использоваться ниже | |
$my_ajax_form = [ | |
"form_add_new", | |
]; | |
function form_add_new(){ | |
$name = trim($_POST["name"]); | |
$e_mail = trim($_POST["e-mail"]); | |
$phone = trim($_POST["phone"]); | |
$message = trim($_POST["message"]); | |
$class_text = trim($_POST["class"]); | |
$id_class = trim($_POST["send_from_class_page"]); | |
$images = []; | |
$max_img_size = 1073741824; | |
if($message == '' && empty($_FILES)) { | |
out_er('Выберите фотографии или напишите в поле "Сообщение" известную вам информацию о классе'); | |
} | |
if($name == ''){ | |
out_er('Введите ваше ФИО'); | |
} | |
if($e_mail == '' && $phone == ''){ | |
out_er('Введите вашу почту или телефон'); | |
} | |
if($id_class !== '' && is_numeric($id_class)) { | |
$id_class = intval($id_class) ?: null; | |
$title_from_class = get_the_title($id_class) ?: ''; | |
$link_from_class = get_permalink($id_class) ?: ''; | |
$table = [ | |
['Тип формы',"Дополнить класс"], | |
['Класс', '<a href="'. $link_from_class .'" target="_blank">'. $title_from_class .'</a>'] | |
]; | |
} else { | |
if($class_text == '') { | |
out_er('Укажите отправляемый класс'); | |
} | |
$table = [ | |
['Тип формы',"Новая информация о классе"], | |
['Класс',$class_text] | |
]; | |
} | |
if(!empty($_FILES)){ | |
foreach($_FILES as $img) { | |
if($img['size'] <= $max_img_size && ($img['type'] == 'image/jpeg' || $img['type'] == 'image/png' || $img['type'] == 'image/jpg')) { | |
$images[] = $img; | |
} | |
} | |
if(empty($images)) { | |
out_er('Пожалуйста, проверьте корректность загружаемых фотографий'); | |
} | |
} | |
$table[] = ['ФИО', $name]; | |
$table[] = ['Почта', $e_mail]; | |
$table[] = ['Телефон', $phone]; | |
$table[] = ['Сообщение', $message]; | |
$table = construct_table($table); | |
if(send_mail($table, "Заявка с сайта (туртасская-сош.рф)", $images)){ | |
out_success('Спасибо за помощь!'); | |
}else{ | |
out_er('Произошла ошибка при отправке. Обновите страницу и попробуйте оставить заявку еще раз.'); | |
} | |
} | |
//объявить все формы на сайте (используется массив, объявленный ранее) | |
foreach($my_ajax_form as $row){ //ADD ALL ACTION | |
add_action("wp_ajax_$row", "$row"); | |
add_action("wp_ajax_nopriv_$row", "$row"); | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment