Рассылка сообщений на email

как и обещал
Функционал:
Выдёргивает имена пользователей + их мыло
Чекбоксы кому отправить (снять все или выделить все)
Ну и собственно сама форма отправки
Можно прикрутить тини по желанию
Будет полезно — жмём +ики закину в вики


<?php
error_reporting(E_ALL ^ E_NOTICE);
header('Content-Type: text/html; charset=utf-8');
include_once('config/config.php');
include_once('config/config.table.php');
include_once('classes/lib/external/DbSimple/Generic.php');
echo '
<script type="text/javascript">
function unCheck(X){
var d=document.forms
for(var i=0;i<d.length;i++){
  for(var j=0;j<d[i].elements.length;j++){
   if(\'checkbox\'==d[i].elements[j].type)d[i].elements[j].checked=1==X?true:false
  }
 }
}
</script> ';

$aConfig = include("config/config.db.php");
$DB = DbSimple_Generic::connect($aConfig['type'].'://'.$aConfig['user'].':'.$aConfig['pass'].'@'.$aConfig['host'].':'.$aConfig['port'].'/'.$aConfig['dbname']);

if ($_POST['subm']){
	require_once('classes/lib/external/phpMailer/class.phpmailer.php');
	$mail = new PHPMailer();
	$mail->IsSMTP();
	$mail->Host = SYS_MAIL_SMTP_HOST;
	$mail->Port = SYS_MAIL_SMTP_PORT;
	$mail->SMTPAuth = true;
	$mail->Username = SYS_MAIL_SMTP_USER;
	$mail->Password = SYS_MAIL_SMTP_PASSWORD;
	$mail->From = SYS_MAIL_FROM_EMAIL;
	$mail->FromName = SYS_MAIL_FROM_NAME;
	$mail->CharSet = SYS_MAIL_CHARSET;
	$mail->WordWrap = 0;
	$mail->IsHTML(true);

  	foreach ($_POST as $key=>$value){
        $pattern="/mail_[0-9]+/";
       	if (preg_match ($pattern, $key)){
       		$valid = true;
			$mail->AddAddress($value);
      	}
    }
    if ($valid == true){
    	$mail->Subject = $_POST['subject'];
		$mail->Body    = $_POST['message'];
	    if(!$mail->Send()){
		   echo "Message could not be sent. <p>";
		   echo "Mailer Error: " . $mail->ErrorInfo;
		   exit;
		}
		else{
			echo 'Сообщение было отправлено';
		}
    }
    else{
    	echo 'Не было выбрано ни одного ящика';
    }
}

$mails = $DB->select("select * from ?#",DB_TABLE_USER);
echo '<form name="" action="" method="post"><br />';
foreach ($mails as $mail){
	echo '<input type="checkbox" name="mail_'.$mail['user_id'].'" value="'.$mail['user_mail'].'" checked>'.$mail['user_login'].', '.$mail['user_mail'].'<br />';
}
echo '<input type="button" value="выбрать все" onClick="unCheck(1)"><input type="button" value="снять выделение" onClick="unCheck(0)"><br />';

echo '
Тема сообщения<br />
<input name="subject" type="text" value=""><br />
Сообщение<br />
<textarea name="message" rows=5 cols=40 wrap="off"></textarea><br />
<input type="submit" name="subm" value="Отправить">
</form>';
?>


только совет прикрыть данный mail.php чем нить — дабы ни кто у Вас не спамил и быть аккуратней с рассылкой — чтоб не забанили адрес

18 комментариев

avatar
Ну, неплохо бы встроить это в движок и дать доступ только админу, тогда вне движка никто использовать не сможет.
А ещё можно бы сделать в профиле пользователя ещё галочку: получать ли новости проекта. И по этой галочке уже рассылать.
  • Wave
  • 0
avatar
если это и будем делать — то только платно
В данной ситуации простое и быстрое решение вопроса
Почему сделали это бесплатно? Потому что данная функция потребовалась самим!
Доп модуль такой нам не нужен — если кто то готов за него заплатить, не проблема
Составляем ТЗ и мы сделаем
avatar
Круто, сегодня попробую воспользоваться, пока еще не тестил.
Набралось бы 6 человек — приктулии бы внутрь ЛС? Было бы офигенно!
avatar
еще бы прикрутить еженедельную рассылку популярных тем в блогах и изменений.
avatar
Message could not be sent.
Mailer Error: SMTP Error: Could not connect to SMTP host.
avatar
Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.mail.ru:25 (Operation not permitted) in /www/testls/users/testls-blogdjru/www/htdocs/classes/lib/external/phpMailer/class.smtp.php on line 122
Message could not be sent.

Mailer Error: SMTP Error: Could not connect to SMTP host.

вот такая ошибка, в чем может быть проблема?
avatar
и в писбме в поле «кому» все емайлы с БД. Хороший подарок спамеру
avatar
или же конкуренту, который по этой же базе разошлёт своё предложение
avatar
А как насчёт закидывать получателей в скрытую копию?
avatar
Message could not be sent.
Mailer Error: SMTP Error: Could not connect to SMTP host.

в чем беда???
  • 2hd
  • 0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.