Скрипт отправки письма с вложенными файлами, по вашей спам базе. Но можно и и подлотать, что бы отправлял указанному вами адресату. Сразу оговорю над красотой не работал. Главное скрипт работает.
Все что нужно это форма с указанными параметрами. И конечно можно подлатать под себя.
<?php
include "config.php"; /*подключаемся к БД */
include "db_connect.php";
if (isset($_POST['title'])){$title = $_POST['title']; if ($title==''){unset($title);}}
if (isset($_POST['text'])){$text = $_POST['text']; if ($text==''){unset($text);}}
if (isset($_POST['limit'])){$limit = $_POST['limit']; if ($limit==''){unset($limit);}} /* переменная начала диапазона id */
if (isset($_POST['limit2'])){$limit2 = $_POST['limit2']; if ($limit2==''){unset($limit2);}} /*переменная конца диапазона id*/
Error_Reporting(E_ALL & ~E_NOTICE);
$picture = "";
$picture2 = "";
// Если поле выбора вложения не пустое - закачиваем его на сервер
if (!empty($_FILES['mail_file']['tmp_name']) && !empty($_FILES['mail_file2']['tmp_name']))
{
// Закачиваем файл
$path = $_FILES['mail_file']['name'];
$path2 = $_FILES['mail_file2']['name'];
if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path;
if (copy($_FILES['mail_file2']['tmp_name'], $path2)) $picture2 = $path2;
}
$thm = $title;
$msg = $text;
// Отправляем почтовое сообщение
if(empty($picture)) {mail($mail_to, $thm, $msg);}
else
{
if ( isset($limit) && isset ($limit2))
{ $res = mysql_query("SELECT email FROM db_comp WHERE (id>$limit AND id<$limit2)"); } /* если задан диапазон, можно и не в id, но я зделал так*/
else
{$res = mysql_query("SELECT email FROM db_comp");}/* если диапазон не задан, то выбрать всех*/
$myrow = mysql_fetch_array($res); /*цикл в котором отправляются письма*/
do
{
$mail_to = $myrow['email'];
$id =$myrow['id'];
echo $id.'<br>';
echo "Письмо отправлено адресату: ".$mail_to."<br>";
send_mail($mail_to, $thm, $msg, $picture, $picture2); /*вызываем функцию по отправке письма.*/
}
while($myrow = mysql_fetch_array($res));
}
// Вспомогательная функция для отправки почтового сообщения с вложением
function send_mail($to, $thm, $html, $path, $path2)
{
$fp = fopen($path,"r");
if (!$fp)
{
print "Файл $path не может быть прочитан";
exit();
}
$file = fread($fp, filesize($path));
fclose($fp);
$fp2 = fopen($path2,"r");
if (!$fp2)
{
print "Файл $path2 не может быть прочитан";
exit();
}
$file2 = fread($fp2, filesize($path2));
fclose($fp2);
$boundary = "--".md5(uniqid(time())); // генерируем разделитель
$headers .= "MIME-Version: 1.0\n";
$headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
$multipart .= "--$boundary\n";
$kod = 'windows-1251';
$multipart .= "Content-Type: text/html; charset=$kod\n";
$multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
$multipart .= "$html\n\n";
$message_part = "--$boundary\n";
$message_part .= "Content-Type: application/octet-stream\n";
$message_part .= "Content-Transfer-Encoding: base64\n";
$message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";
$message_part .= chunk_split(base64_encode($file))."\n";
$message_part .= "--$boundary\n";
$message_part .= "Content-Type: application/octet-stream\n";
$message_part .= "Content-Transfer-Encoding: base64\n";
$message_part .= "Content-Disposition: attachment; filename = \"".$path2."\"\n\n";
$message_part .= chunk_split(base64_encode($file2))."\n";
$multipart .= $message_part."--$boundary--\n";
if(!mail($to, $thm, $multipart, $headers))
{
echo "К сожалению, письмо не отправлено";
exit();
}
}
?>
Вот пользуемся. Если есть мастера оптимизации php кода. Милости просим. Пишите коментарии, где и что пожно оптимизировать. Буду рад. по пыхтеть