Бюлетин на e-mail / Newsletter
Това е много прост бюлетин (от англ. Newsletter), който използва MySQL за да записва е-мейлите на потребителите и после за да изпраща!


sql.sql
CREATE TABLE `newsletter`.`newsletter` (
`id` INT NOT NULL AUTO_INCREMENT ,
`mail` VARCHAR( 68 ) NOT NULL ,
PRIMARY KEY ( `id` ) ,
UNIQUE (
`mail`
)
) ENGINE = MYISAM


index.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title></title>
</head>
<body>
Запиши се за бюлетина с новини:<br />
<form method="post" action="">
<input type="text" name="mail" /><input type="submit" name="submit" value="Запиши">
</form>
<?php
include('functions.php');
if(isset($_POST['submit'])){
saveIt($_POST['mail']);
}
?>
</body>
</html>


send.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title></title>
</head>
<body>
Изпрати писмо:<br />
<form method="post" action="">
<input type="text" name="topic" /> Тема<br />
Писмо<br />
<textarea name="content" rows="15" cols="60"></textarea>
<input type="submit" name="submit" value="Изпрати">
</form>
<?php
include('functions.php');
if(isset($_POST['submit'])){
sendIt($_POST['topic'], $_POST['content']);
}
?>
</body>
</html>


functions.php
<?php
mysql_connect("localhost", "root", "vertrigo") or die(mysql_error());
mysql_select_db("newsletter") or die(mysql_error());

function isEmail($email) {
$regex = "/^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/";

if ( preg_match($regex, $email )) {

return true;

}

else {

return false;

}
}


function saveIt($email) {
if(isEmail(trim($_POST['mail']))) {

$mail = $_POST['mail'];

$query = "SELECT * FROM newsletter WHERE mail='$mail'";

$result = mysql_query($query) or die(mysql_error());

$counted = mysql_fetch_array($result);

if($counted[1] == $mail) {

echo "Вече има такъв е-мейл в базата от данни!";

}
else {
mysql_query("INSERT INTO newsletter (id, mail) VALUES('', '$mail' ) ") or die(mysql_error());

echo "Е-мейла е записан успешно в базата от данни!";
}
}
else {

echo "Въвел си невалиден е-мейл!";

}
}

function sendIt($topic, $email) {
$myName = "Ivan Bezimenov"; // името ти
$myEmail = "i.bezimenov@gmail.com"; //твоя е-мейл адрес
$mail_body = $email;
$subject = $topic;
$header = "From: ". $myName . " <" . $myEmail . ">\r\n";


$result = mysql_query("SELECT * FROM newsletter") or die(mysql_error());

while($row = mysql_fetch_array( $result )) {
$recipent = $row['mail'];
mail($recipient, $subject, $mail_body, $header); // изпращане
}

echo "Писмата са изпратени успешно!";


}

?>


Разбира се бюлетина е много опростен и с минимално функции, което пък спомага за лесното му преработване :)

Кода е авторски!



/ Трябва да сте регистриран за да напишете коментар /
От: ragouster
23:19 17-10-2009
Може ли да се направи бщлетина да изпраща писма с определена периодичност, например всеки ден, или всеки час?
От: deam0n
21:02 21-10-2009
Трябва малко да се промени, иначе може с Cron Job
От: emcuemnecu
16:24 15-06-2011
А самите Емайли от къде мога да видя кои са се записали за новини, и да им взема самите адреси после когато има актуална новина ?
От: deam0n
18:28 15-06-2011
Хах през phpmyadmin можеш да ги видиш.. а иначе използваш send.php за да ги изпратиш. Във functions.php е самата функция, чрез която изпращаш.
От: emcuemnecu
0:53 17-06-2011
Работи, само дето .sql таблицата е грешна в първия ред.
Да попитам какъв ще е кода за да се изкарват адресите, които искат да получават новини в даден .php файл?
1