battles/mailsender.php

124 lines
7.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?
session_start();
include "config.php";
$user = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `id` = '".$_SESSION['uid']."' LIMIT 1;"));
if ($user['align']!=2.99) die('Страница не найдена :)');
include "functions.php";
// Устанавливает лимит времени исполнения для этого файла (связано с тайм-аутом)
set_time_limit (1200);
// Адреса отправителя
$mail1="admin@old-dark.ru";
// Обрабатываем адреса для отображения в форме
$tmail1=htmlspecialchars($mail1, NULL, "");
// Далее идёт сам скрипт
// Если массив POST не пустой, отправка состоялась
if (!empty($_POST) && !isset($sent)) {
// Определяем переменные
$emailer_subj = $_POST['emailer_subj'];
$emailer_mails = $_POST['emailer_mails'];
$emailer_text = $_POST['emailer_text'];
$emailer_yourmail = $_POST['emailer_yourmail'];
// Теперь проверяем заполнение всех полей
if (empty($emailer_subj) || $emailer_subj=="Тема письма") {
// Если тема пустая...
$mail_msg='<b>Вы не ввели тему письма</b>';
} elseif (empty($emailer_mails) || $emailer_mails=="Почтовые адрсе") {
// Если адресов нет...
$mail_msg='<b>Не указано адреса получателей</b>';
} elseif (empty($emailer_text) || $emailer_text=="Текст письма") {
// Если сообщение пустое...
$mail_msg='<b>Вы не ввели текст письма</b>';
} else { // Если все поля заполнены верно...
// Готовим сообщение об успешной отправке... Вдруг у вас какой-то необычный браузер
$mail_msg='Ваше сообщение отправлено.<br>Нажмите <a href="'.$_SERVER['REQUEST_URI'].'">здесь</a>, если ваш браузер не поддерживает перенаправление.';
// Готовим заголовки письма... Будем отправлять письма в формате HTML и кодировке UTF-8
$headers="MIME-Version: 1.0\r\n";
$headers.="Content-type: text/html; charset=utf-8\r\n";
$headers.="From: $emailer_yourmail";
// Обработка письма. Нужно удалить лишние пробелы и проставить переносы.
// $emailer_text=ereg_replace('/ +/',' ',$emailer_text); // множественные пробелы заменяются на одинарные
// $emailer_text=ereg_replace('/(\r\n){3,}/','\r\n\r\n',$emailer_text); // убираем лишние переносы (больше 1 строки)
$emailer_text=str_replace('\r\n','<br>',$emailer_text); // ставим переносы
// Получаем массив адресов. В качестве разделителя у нас используется запятая.
$emails=explode(",", $emailer_mails);
$count_emails = count($emails); // Подсчёт количества адресов
// Запускаем цикл отправки сообщений
for ($i=0; $i<=$count_emails-1; $i++) // Отчёт начинается в массиве с нуля, поэтому уменьшаем сумму на единицу
{
// Подставляем адреса получаетелей и обрезаем пробелы с обоих сторон, если таковые имеются
$email=trim($emails[$i]);
// Отправляем письмо и готовим отчёт по отправке
if($emails[$i]!="") { // Проверка на случай попадения в массив пустого значения
if(mail($email,$emailer_subj,$emailer_text,$headers)) $report.="<li><span style=\"color:green;\">Отправлено: ".$emails[$i]."</span></li>"; else $report.="<li><span style=\"color:red;\">Не отправлено: ".$emails[$i]."<span></li>";
sleep(5); // Делаем тайм-аут в 5 секунд
}
}
// Запись отчёта в файл. Файл будет сгенерирован в той же папке, под названием log.txt. Проверьте настройку прав папки.
$log=fopen("log.txt","w");
fwrite($log,$report);
fclose($log);
// Переменная $sent признак успешной отправки
$sent=1;
}
} else { // Если в массиве POST пусто, форма еще не передавалась
// Готовим приглашение
$mail_msg='Все поля обязательны для заполнения.';
// Поля темы, адресов получаетелей и получателей, и текста в этом случае должны быть пустыми
$emailer_text=$emailer_subj=$emailer_mails=$emailer_yourmail='';
}
// Если $sent не существует, выводим форму или отчёт
if (!isset($sent)) {
// Если сообщение уже отправлено - выводим отчёт
if(isset($_GET['messent']))
{echo $text.="<b style=\"text-align:center;margin-top:200px;display:block;\">Всё окей. Сообщение отправлено. <a href=\"mailsender.php\">Ещё?</a><br><br><u>Отчёт:</u></b> <ol style=\"display:block;width:300px;margin:10px auto;\">";
readfile("log.txt");
echo"</ol>";}
else {
// Или выводим форму, если сообщение ещё не отправлено
echo $text.=<<<post
<script type="text/javascript">
function form_validator(form) {
if (form.emailer_subj.value=='' || form.emailer_subj.value=='Тема письма') { alert('Укажите тему письма.'); form.emailer_subj.focus(); return false; }
if (form.emailer_mails.value=='' || form.emailer_mails.value=='Почтовые адреса') { alert('Укажите адреса получаталей.'); form.emailer_mails.focus(); return false; }
if (form.emailer_text.value=='' || form.emailer_text.value=='Текст письма') { alert('Вы не заполнили поле сообщения.'); form.emailer_text.focus(); return false; }
return true;
}
</script>
<style type="text/css">
form {display:block;margin:20px auto;width:500px;}
textarea, input, select {width:100%; margin:5px 0;}
textarea {height:200px;}
.red {color:#a00;}
</style>
<form method="post" onsubmit="return form_validator(this);">
<p class="red">$mail_msg</p>
<input type="text" name="emailer_subj" id="emailer_subj" value="Тема письма" title="По какому поводу пишем?" onfocus="if (this.value=='Тема письма') this.value='';" onblur="if (this.value=='') this.value='Тема письма';">
<textarea name="emailer_mails" id="emailer_mails" title="Кто получатели?" onfocus="if (this.value=='Почтовые адреса') this.value='';" onblur="if (this.value=='') this.value='Почтовые адреса';">Почтовые адреса</textarea>
<textarea name="emailer_text" id="emailer_text" title="Что пишем?" onfocus="if (this.value=='Текст письма') this.value='';" onblur="if (this.value=='') this.value='Текст письма';">Текст письма</textarea>
<select name="emailer_yourmail">
<option value="$mail1">$tmail1</option>
</select>
<input type="submit" value="Отправить" title="Отправить мыл">
</form>
post;
}
}
else { // А если существует...
// Посылаем в заголовке редирект (303 Refresh) на этот же адрес с дополнительным параметром messent
$ret_uri=$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Refresh: 0; URL=http://".$ret_uri."?messent");
exit;
}
?>