Отправка E-Mail с подменой отправителя на php

3 ответ(ов) в теме
Stanislavovich
не в сети давно
На сайте с 19.12.2013
Участник
0
00:16

Наверно многие задумывались над вопросом: можно ли отправить письмо с подменой адреса E-mail, чтобы, к примеру, подшутить над своим товарищем или подругой. Отвечаю — можно, причем очень легко с помощью стандартных средств PHP.
Недавно решил написать такой скрипт с возможностью множественной рассылки. Загрузить архив.
Сам скрипт состоит из 4-х файлов. functions.php — основной функционал скрипта. config.php — данные для доступа к базе данных для вставки туда всех адресов. index.php — форма для отправки и style.css — таблица стилей, чтоб красиво было.
Листинг functions.php
<?php <br> require_once 'config.php'; <br> function connect_to_db ($db_host, $db_user, $db_pass, $db_name, $db_charset) <br> { <br> $mysql_connect = mysql_connect($db_host, $db_user, $db_pass); <br> if ($mysql_connect) { <br> $select_db = mysql_select_db($db_name); <br> if ($select_db) { <br> $q = "SET NAMES $db_charset"; <br> $set_names = mysql_query($q); <br> return true; <br> } else { <br> $mysql_error = "На сервере не найдено базы данных с именем ".$db_name; <br> exit ($mysql_error()); <br> } <br> } else { <br> $mysql_error = "Ошибка связи с сервером базы данных"; <br> exit ($mysql_error()); <br> } <br> return false; <br> } <br> $db = connect_to_db ($db_host, $db_user, $db_pass, $db_name, $db_charset); <br> header ('Content-Type: text/html; charset=UTF-8'); <br> function post_data_is_valid () <br> { <br> if (isset($_POST['from'])) { <br> $from = trim($_POST['from']); <br> $form = strtolower($from); <br> if (!preg_match('/^[a-z0-9_.-]+@[a-z0-9_.-]+.[a-z.]{2,6}$/', $from)) { <br> return '<script>alert('Неправильно заполнено поле "E-mail отправителя"')</script>'; <br> } <br> } else <br> return false;<br><br> if (isset($_POST['name'])) { <br> $name = trim($_POST['name']); <br> if (!preg_match('/^.{3,30}$/', $name)) { <br> return '<script>alert('Неправильно заполнено поле "Имя отправителя"')</script>'; <br> } <br> } else <br> return false;<br><br> if (isset($_POST['subject'])) { <br> $subject = trim($_POST['subject']); <br> if (!preg_match('/^.{3,128}$/', $subject)) { <br> return '<script>alert('Неправильно заполнено поле "Тема письма"')</script>'; <br> } <br> } else <br> return false;<br><br> if (isset($_POST['to'])) { <br> $to = trim($_POST['to']); <br> $to = strtolower($to); <br> if (!preg_match_all('/ *[a-z0-9_.-]{2,30}@[a-z0-9_.-]{2,20}.[a-z.]{2,6} */', $to, $mail_list)) { <br> return '<script>alert('В списке не найдено ни одного корректного адреса E-mail"')</script>'; <br> } else { <br> $to = array(); <br> foreach ($mail_list[0] as $key => $value) { <br> $to[$key] = $value; <br> $to[$key] = trim($to[$key]); <br> } <br> } <br> } else <br> return false;<br><br> if (isset($_POST['message_type'])) { <br> $message_type = trim($_POST['message_type']); <br> if ($message_type == 'text') <br> $content_type = 'Content-Type: text/plain; charset=UTF-8' . "<br>"; <br> else <br> if ($message_type == 'html') <br> $content_type = 'Content-Type: text/html; charset=UTF-8' . "<br>";<br><br> } else <br> return false;<br><br> if (isset($_POST['message'])) { <br> $message = trim($_POST['message']); <br> $message = stripslashes($message); <br> if (strlen($message) < 3 || strlen($message) > 4096) { <br> return '<script>alert('Неправильно заполнено поле "Текст письма"')</script>'; <br> } <br> } else <br> return false;<br><br> return array (<br><br> 'from' => $from, <br> 'name' => $name, <br> 'subject' => $subject, <br> 'message' => $message, <br> 'to' => $to, <br> 'content_type' => $content_type <br> ); <br> } <br> function add_mail_to_db ($email) <br> { <br> $email = trim($email); <br> $email = htmlspecialchars($email); <br> $email = mysql_real_escape_string($email); <br> $last_used = date("Y-m-d H:i:s"); <br> $q = mysql_query ("SELECT `id` FROM `e-mails` WHERE `e-mail`='$email' LIMIT 1"); <br> if (mysql_num_rows($q) > 0) <br> $q = "UPDATE `e-mails` SET `last_used`='$last_used' WHERE `e-mail`='$email' LIMIT 1"; <br> else <br> $q = "INSERT INTO `e-mails` (`e-mail`, `last_used`) VALUES ('$email', '$last_used')"; <br> $result = mysql_query($q); <br> if (!$result) <br> return false; <br> return true; <br> } <br> function sent_post_from_fake_mail ($from, $name, $subject, $message, $to, $content_type) <br> { <br> $sent_status = mail ($to, $subject, $message, $content_type . "From: $name <$from><br>"); <br> if ($sent_status !== false) <br> return true; <br> else <br> return false; <br> }<br><br> function input_value ($field_name) <br> { <br> if (isset($_POST[$field_name])) <br> return ' value="'.$_POST[$field_name].'"'; <br> }<br><br> function textarea_value () <br> { <br> if (isset($_POST['message'])) <br> return stripslashes($_POST['message']); <br> }<br><br> function textarea_mail_values () <br> { <br> if (isset($_POST['to'])) <br> return trim($_POST['to']); <br> }<br><br> function radio_checked ($value) <br> { <br> if (isset($_POST['message_type']) && $_POST['message_type'] == $value) <br> return ' checked'; <br> else <br> if ($value == 'text') <br> return ' checked'; <br> } <br> $alert = ''; <br> $textarea_mail_list = ''; <br> if (isset($_GET['do']) && $_GET['do'] == 'sent') <br> if (post_data_is_valid ()) { <br> if (isset($_COOKIE['sent']) && $_COOKIE['sent'] == 'true') <br> $alert = '<script>alert('Рассылать письма можно только 1 раз в 5 минут')</script>'; <br> else { <br> $sent_data = post_data_is_valid (); <br> if (!is_array($sent_data) && $sent_data !== false) <br> $alert = $sent_data; <br> else { <br> $success = 0; <br> $failed = 0; <br> $sent_data['to'] = array_unique($sent_data['to']); <br> foreach ($sent_data['to'] as $to) { <br> add_mail_to_db ($to); <br> $sent_status = sent_post_from_fake_mail ($sent_data['from'], $sent_data['name'], $sent_data['subject'], $sent_data['message'], $to, $sent_data['content_type']);<br><br> if (!$sent_status) <br> $failed++; <br> else { <br> $success++; <br> } <br> } <br> if ($success === 0) <br> $alert = '<script>alert('Рассылка завершилась неудачей. Попробуйте повторить попытку через 30 минут')</script>'; <br> else { <br> setcookie('sent', 'true', time() + 300); <br> $alert = '<script>alert('Рассылка закончена. Успешно отправлено: '.$success.' писем. Завершились неудачей: '.$failed.' рассылок')</script>'; <br> } <br> } <br> } <br> } <br>?><br>Листинг config.php<br><?php <br> $db_host = 'localhost'; <br> $db_user = 'Пользователь БД'; <br> $db_pass = 'Пароль БД'; <br> $db_name = 'Имя базы'; <br> $db_charset = 'utf8'; <br>?>

Листинг index.php

<?php require_once 'functions.php'; ?> <br><!doctype html> <br><html> <br> <head> <br> <meta charset="utf-8"> <br> <title>Анонимная отправка писем с любого почтового ящика</title> <br> <meta name="description" content="Онлайн-сервис для анонимной отправки писем с любого почтового ящика"> <br> <meta name="keywords" content="отправка писем, фальшивый ящик, анонимная отправка писем, фальшивая почта, подделка e-mail"> <br> <link rel="stylesheet" href="style.css"> <br> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script> <br> <script type="text/javascript"> <br> function diplay_hide (blockId) <br> {<br> if ($(blockId).css('display') == 'none')<br> $(blockId).animate({height: 'show'}, 500);<br> else<br> $(blockId).animate({height: 'hide'}, 500);<br> }<br> </script> <br> </head> <br> <body> <br> <a class="share" href="javascript:void(0)" onclick="diplay_hide('#share');">Код для сайта</a> <br> <textarea id="share" style="display: none;" readonly><a href="http://<?=$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']?>">Отправить письмо с поддельного E-mail адреса</a></textarea> <br> <section id="wrap"> <br> <h1>Отправить письмо с любого адреса</h1> <br> <form action="?do=sent" method="post"> <br> <input class="textbox" type="text" name="from"<?=input_value('from');?> placeholder="E-mail отправителя"><br> <input class="textbox" type="text" name="name"<?=input_value('name');?> placeholder="Имя отправителя"><br> <input class="textbox" type="text" name="subject"<?=input_value('subject');?> placeholder="Тема письма"><br> <textarea name="to" placeholder="Список E-mail адресов для рассылки. Каждый адрес должен начинаться с новой строки."><?=textarea_mail_values();?></textarea> <br> <span>Формат письма: </span> <br> <input id="text_t" class="radiobox" type="radio" name="message_type" value="text"<?=radio_checked ('text');?>><br> <label for="text_t">Текст</label> <br> <input id="html_t" class="radiobox" type="radio" name="message_type" value="html"<?=radio_checked ('html');?>><br> <label for="html_t">HTML</label> <br> <textarea name="message" placeholder="Текст письма"><?=textarea_value();?></textarea> <br> <button type="submit">Послать письмо</button> <br> </form> <br> <footer> <br> <p>Сервис разрабатывался как программа-шутка исключительно для ознакомительных целей. Администрация сайта не несет никакой ответственности за действия пользователей.</p> <br> </footer> <br> <?=$alert?> <br> </section> <br> </body> <br></html>

Листинг style.css

html { <br> background: #fcf8e4; <br>} <br>h1 { <br> color: #333; <br> font-size: 18px; <br> font-weight: normal; <br> text-align: center; <br>} <br>#wrap { <br> width: 400px; <br> margin: 50px auto; <br> text-align: center; <br>} <br>input { <br> width: 100%; <br> padding: 5px; <br> margin-bottom: 5px; <br> font-family: Tahoma, Verdana; <br> font-size: 14px; <br>} <br>input.textbox { <br> border: 1px solid #626262; <br> --moz-border-radius: 3px; <br> --webkit-border-radius: 3px; <br> border-radius: 3px; <br>} <br>input.textbox:-moz-placeholder { <br> color: #333; <br>} <br>input.textbox::-webkit-input-placeholder { <br> color: #333; <br>} <br>textarea { <br> width: 100%; <br> height: 150px; <br> margin: 8px 0; <br> padding: 5px; <br> font-family: Tahoma, Verdana; <br> font-size: 14px; <br> border: 1px solid #626262; <br> --moz-border-radius: 3px; <br> --webkit-border-radius: 3px; <br> border-radius: 3px; <br>} <br>textarea:-moz-placeholder { <br> color: #333; <br> } <br>textarea::-webkit-input-placeholder { <br> color: #333; <br> } <br>button { <br> width: 415px; <br> height: 70px; <br> margin: 5px 0; <br>} <br>footer p { <br> font-family: Tahoma, Verdana; <br> font-size: 11px; <br> text-align: left; <br> color: #cc0000; <br> margin-left: 30px; <br> margin-top: 30px; <br>} <br>a.share { <br> position: absolute; <br> top: 10px; <br> left: 10px; <br> font-family: Tahoma, Verdana; <br> text-decoration: none; <br> border-bottom: 1px dashed #222; <br> color: #000; <br> font-weight: bold; <br> font-size: 12px; <br>} <br>textarea#share { <br> position: absolute; <br> top: 20px; <br> left: 10px; <br> width: 400px; <br> height: 45px; <br> font-family: "Courier New", Consolas; <br> font-size: 13px; <br>} <br>label { <br> font-family: Tahoma, Verdana; <br> font-size: 12px; <br> cursor: pointer; <br>} <br>form span { <br> font-family: Tahoma, Verdana; <br> font-size: 12px; <br>} <br>.radiobox { <br> margin-top: 5px; <br>}

Пользуемся на здоровье. Администрация сайта не несет никакой ответсвенности за использование этого программного обеспечения, т.к. оно создавалось исключительно в ознакомительных целей как программа-шутка.

Редакции сообщения
0
Stanislavovich
не в сети давно
На сайте с 19.12.2013
Участник
0
00:17

Полезная штука!>:D>:D:play:play

Редакции сообщения
0
fifa 2014
не в сети давно
На сайте с 09.01.2014
Участник
0
00:20

хахахаха спасибо понял в чем прикол этого кода

Редакции сообщения
0

Ваше имя *

Ваш E-mail *

не публикуется

Текст сообщения *

Ок или
Загрузить