Просмотр полной версии : Кто поможет?
Помогите! Нужен пхп для отправки писем в html с вложением. Киньте кто нить скрипт в личку или сюда. Заранее благодарин.
Ну может кто поможет? Что сюда запихать что бы можно было присоединять файлы или картинки? Желательно, что бы можно было присоединять много файлов, а не один.<?
if (@function_exists("mail"))
{
include "config.php";
?>
<?
if (isset($_GET['send']) and isset($_POST['sform']))
{
$to = trim($_POST['to']);
if ($to != "")
{
$from = $_POST['from'];
$theme = $_POST['theme'];
$content = $_POST['content'];
$to = ereg_replace (",([^ ]{1})", ", \\1", $to);
$theme = $theme==""?"No subject":$theme;
if (@$_POST['cyr_encode'] == "yes")
$theme = "=?koi8-r?B?".base64_encode(convert_cyr_string($theme, "w","k"))."?=";
if (@$_POST['html'] == "yes")
$ctype = "html";
else
$ctype = "plane";
$header = "Content-Type: text/$ctype; charset=\"$charset\" \r\n";
$header .= "From: $from \r\n";
$header .= "X-Mailer: PHP-Mailer by s1ayer[www.spg.arbse.net] \r\n";
if (@$_POST['hide_addr'] == "yes")
{
$error = 0;
$to_array = explode (", ", $to);
for ($i=0; $i<count($to_array); $i++)
{
if ($to_array == "")
continue;
if (!@mail($to_array[$i], $theme, $content, $header))
$error++;
}
if ($error == 0)
print "Отправка письма завершилась без ошибок<br><br>";
else
print "Невозможно отправить письмо!<br><br>";
}
else
{
if (@mail($to, $theme, $content, $header))
print "Отправка письма завершилась без ошибок<br><br>";
else
print "Невозможно отправить письмо!<br><br>";
}
}
else
print "Вы не заполнили поле 'Кому' !<br><br>";
}
?>
<SCRIPT LANGUAGE="JavaScript">
<!--
function hide_button (){
document.getElementById('button').style.display = "none";
document.getElementById('processing').style.displa y = "block";
}
//-->
</SCRIPT>
<form action="?send" method="post">
<table>
<tr><td>Кому:</td><td><input type="text" name="to" value="<?=$default_to?>" size=40></td></tr>
<tr><td>От кого:</td><td><input type="text" name="from" value="<?=$default_from?>" size=40></td></tr>
<tr><td>Тема:</td><td><input type="text" name="theme" size=40></td></tr>
<tr><td valign="top">Содержание:</td><td><textarea name="content" rows=9 cols=50><?=$default_sign?></textarea></td></tr>
<tr><td colspan=2>
Опции:<br>
<ul>
<li>отправить в HTML ? <input type="checkbox" name="html" value="yes"></li>
<li>кодировать заголовок письма в koi8 ? <input type="checkbox" name="cyr_encode" value="yes" checked></li>
<li>скрыть других адресатов ? <input type="checkbox" name="hide_addr" value="yes" checked></li>
</ul>
</td>
</tr>
<tr><td colspan=2 align="right"><input type="hidden" name="sform" value="yes"><input type="submit" value="Отправить" id=button style="display: block" onClick="hide_button()"><button id="processing" style="display: none" disabled>Пожалуйста, ждите...</button></td></tr>
</table>
</form>
<?
}
else
print "Извините, сервер не поддерживает функции <tt>mail ()</tt>";
?>
<?
$charset = "windows-1251"; //кодировка письма
$default_to = "slayer <admin_progamers@rambler.ru>, somebody <mail@server.com>"; //адресаты по умолчанию
$default_from = "s1ayer <admin_progamers@rambler.ru>"; //отправитель по умолчанию
$default_sign = "\r\n---\r\nBest regards, admin (http://www.spg.arbse.net)"; //подпись в теле письма
?>
inlanger
27.12.2008, 21:38
Есть класс на пхп для этого
Pashkela
27.12.2008, 21:51
http://www.php-mail.ru/?id=4
Залил вот так. На добавление файла кнопка есть, но файл не пересылает на нужный мыл. И мне нужно присоеденить несколько файлов. Как можно это зделать и что бы все работало.
<?
if (@function_exists("mail"))
{
include "config.php";
?>
<?
if (isset($_GET['send']) and isset($_POST['sform']))
{
$to = trim($_POST['to']);
if ($to != "")
{
$from = $_POST['from'];
$theme = $_POST['theme'];
$content = $_POST['content'];
$to = ereg_replace (",([^ ]{1})", ", \\1", $to);
$theme = $theme==""?"No subject":$theme;
// если был файл, то прикрепляем его к письму
if(isset($_FILES['attachfile'])) {
if($_FILES['attachfile']['error'] == 0){
$mail->AddAttachment($_FILES['attachfile']['tmp_name'], $_FILES['attachfile']['name']);
}
}
// если было изображение, то прикрепляем его в виде картинки к телу письма.
if(isset($_FILES['attachimage'])) {
if($_FILES['attachimage']['error'] == 0){
if (!$mail->AddEmbeddedImage($_FILES['attachimage']['tmp_name'], 'my-attach', 'image.gif', 'base64', $_FILES['attachimage']['type']))
die ($mail->ErrorInfo);
$mess .= 'А вот и наша картинка:<br /><img src="cid:image.gif" border=0><br />я показал как ее прикреплять, соответственно Вам осталось вставить ее в нужное место Вашего письма ;-) ';
}
}
$mail->Body = $mess;
if (@$_POST['cyr_encode'] == "yes")
$theme = "=?koi8-r?B?".base64_encode(convert_cyr_string($theme, "w","k"))."?=";
if (@$_POST['html'] == "yes")
$ctype = "html";
else
$ctype = "plane";
$header = "Content-Type: text/$ctype; charset=\"$charset\" \r\n";
$header .= "From: $from \r\n";
$header .= "X-Mailer: PHP-Mailer by s1ayer[www.spg.arbse.net] \r\n";
if (@$_POST['hide_addr'] == "yes")
{
$error = 0;
$to_array = explode (", ", $to);
for ($i=0; $i<count($to_array); $i++)
{
if ($to_array == "")
continue;
if (!@mail($to_array[$i], $theme, $content, $header))
$error++;
}
if ($error == 0)
print "Отправка письма завершилась без ошибок<br><br>";
else
print "Невозможно отправить письмо!<br><br>";
}
else
{
if (@mail($to, $theme, $content, $header))
print "Отправка письма завершилась без ошибок<br><br>";
else
print "Невозможно отправить письмо!<br><br>";
}
}
else
print "Вы не заполнили поле 'Кому' !<br><br>";
}
?>
<SCRIPT LANGUAGE="JavaScript">
<!--
function hide_button (){
document.getElementById('button').style.display = "none";
document.getElementById('processing').style.displa y = "block";
}
//-->
</SCRIPT>
<form action="?send" method="post">
<table>
<tr><td>Кому:</td><td><input type="text" name="to" value="<?=$default_to?>" size=40></td></tr>
<tr><td>От кого:</td><td><input type="text" name="from" value="<?=$default_from?>" size=40></td></tr>
<tr><td>Тема:</td><td><input type="text" name="theme" size=40></td></tr>
<tr><td valign="top">Содержание:</td><td><textarea name="content" rows=9 cols=50><?=$default_sign?></textarea></td></tr>
<tr><td colspan=2>
Опции:<br>
<ul>
<br />Файл<br />
<input name="attachfile" type="file" size="28">
<br />Изображение<br />
<li>отправить в HTML ? <input type="checkbox" name="html" value="yes"></li>
<li>кодировать заголовок письма в koi8 ? <input type="checkbox" name="cyr_encode" value="yes" checked></li>
<li>скрыть других адресатов ? <input type="checkbox" name="hide_addr" value="yes" checked></li>
</ul>
</td>
</tr>
<tr><td colspan=2 align="right"><input type="hidden" name="sform" value="yes"><input type="submit" value="Отправить" id=button style="display: block" onClick="hide_button()"><button id="processing" style="display: none" disabled>Пожалуйста, ждите...</button></td></tr>
</table>
</form>
<?
}
else
print "Извините, сервер не поддерживает функции <tt>mail ()</tt>";
?>
saiman
Попробуй так:
Для начала, чтобы картинки корректно отображались на хостинге. Добавь файл
.htaccess в папку со скриптом такого содержания:
<IfModule mod_charset.c>
CharsetRecodeMultipartForms off
</IfModule>
Далее сам скрипт
<?php
function show_form()
{
?>
<form action="" method=post>
<div align="center">
<br />Имя*<br />
<input type="text" name="name" size="40">
<br />Контактный телефон<br />
<input type="text" name="tel" size="40">
<br />Контактный email*<br />
<input type="text" name="email" size="40">
<br />Teма<br />
<input type="text" name="title" size="40">
<br />Сообщение*<br />
<textarea rows="10" name="mess" cols="30"></textarea>
<br /><input type="submit" value="Отправить" name="submit">
</div>
</form>
* Помечены поля, которые нужно заполнить
<?
}
function complete_mail() {
// $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменных $_POST['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] все аналогично
$_POST['title'] = substr(htmlspecialchars(trim($_POST['title'])), 0, 1000);
$_POST['mess'] = substr(htmlspecialchars(trim($_POST['mess'])), 0, 1000000);
$_POST['name'] = substr(htmlspecialchars(trim($_POST['name'])), 0, 30);
$_POST['tel'] = substr(htmlspecialchars(trim($_POST['tel'])), 0, 30);
$_POST['email'] = substr(htmlspecialchars(trim($_POST['email'])), 0, 50);
// если не заполнено поле "Имя" - показываем ошибку 0
if (empty($_POST['name']))
output_err(0);
// если неправильно заполнено поле email - показываем ошибку 1
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email']))
output_err(1);
// если не заполнено поле "Сообщение" - показываем ошибку 2
if(empty($_POST['mess']))
output_err(2);
// создаем наше сообщение
$mess = '
Имя отправителя:'.$_POST['name'].'
Контактный телефон:'.$_POST['tel'].'
Контактный email:'.$_POST['email'].'
'.$_POST['mess'];
// $to - кому отправляем
$to = 'test@test.ru';
// $from - от кого
$from='test@test.ru';
mail($to, $_POST['title'], $mess, "From:".$from);
echo 'Спасибо! Ваше письмо отправлено.';
}
function output_err($num)
{
$err[0] = 'ОШИБКА! Не введено имя.';
$err[1] = 'ОШИБКА! Неверно введен e-mail.';
$err[2] = 'ОШИБКА! Не введено сообщение.';
echo '<p>'.$err[$num].'</p>';
show_form();
exit();
}
if (!empty($_POST['submit'])) complete_mail();
else show_form();
?>
saiman
Попробуй так:
Для начала, чтобы картинки корректно отображались на хостинге. Добавь файл
.htaccess в папку со скриптом такого содержания:
В браузере пишет что всплывающее окно заблокировано. Мне нужно переделать под приклеевание файлов к письму именно мой скрипт указаный выше. Может кто поможет?
Pashkela
28.12.2008, 00:13
Блин, не тупи, разреши javascript в браузере. А вообще сам подумай, вот у тебя даже и то блокиратор окон стоит - вывод, javascript нах, всё делаей через php, так правильней
Ну может кто подскажет, что нужно изменить в моем первом скрипте дабы все похало. Какой класс куда вставить? Я был бы очень признателен тому человеку который помог бы!
saiman
Далее сам скрипт
А этот скрипт разве без ошибок написан?!
KaZ@NoVa
30.12.2008, 10:48
вот пример!!!
<IfModule mod_charset.c> CharsetRecodeMultipartForms off </IfModule> Итак, переходим к скрипту: <?php function show_form() { ?> <form action="" method=post enctype="multipart/form-data"> <div align="center"> <br />Имя*<br />
<input type="text" name="name" size="40"> <br />Контактный телефон<br /
> <input type="text" name="tel"
size="40"> <br />Контактный email*<br /
> <input type="text" name="email"
size="40"> <br />Teма<br />
<input type="text" name="title"
size="40"> <br />Сообщение*<br /
> <textarea rows="10" name="mess"
cols="30"></textarea> <br />Файл<br /
> <input name="attachfile" type="file"
size="28"> <br />Изображение<br /
> <input name="attachimage" type="file"
size="28"> <br /><br /><input type="submit"
value="Отправить" name="submit"> </div> </
form> * Помечены поля, которые необходимо
заполнить <? } function complete_mail() {
// $_POST['title'] содержит данные из поля "Тема", trim
() -
($_POST['title'], 0, 1000) -
текст до 1000 символов. Для переменных $_POST
['mess'], $_POST['name'], $_POST['tel'], $_POST['email']
все аналогично $_POST['title'] = substr
(htmlspecialchars(trim($_POST['title'])), 0, 1000); $_POST['mess'] = substr(htmlspecialchars(trim($_POST['mess'])), 0, 1000000); $_POST['name'] = substr(htmlspecialchars(trim($_POST['name'])), 0, 30); $_POST['tel'] = substr(htmlspecialchars(trim($_POST['tel'])), 0, 30); $_POST['email'] = substr(htmlspecialchars(trim($_POST['email'])), 0, 50); // если не заполнено поле "Имя" - показываем ошибку 0 if (empty($_POST['name'])) output_err(0); // если неправильно заполнено поле email - показываем ошибку 1 if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email'])) output_err(1); // если не заполнено поле "Сообщение" - показываем ошибку 2 if(empty($_POST['mess'])) output_err(2); // обратите внимание, теперь мы можем писать красивые письма, с помощью html тегов ;-) $mess = ' <b>Имя отправителя:</b>'.$_POST['name'].'<br /> <b>Контактный телефон:</b>'.$_POST['tel'].'<br /> <b>Контактный email:</b>'.$_POST['email'].'<br /> '.$_POST['mess']; // подключаем файл класса для отправки почты require 'class.phpmailer.php'; $mail = new PHPMailer(); $mail->From = 'test@test.ru'; // от кого $mail->FromName = 'www.php-mail.ru'; // от кого $mail->AddAddress('to@yandex.ru', 'Имя'); // кому - адрес, Имя $mail->IsHTML(true); // выставляем формат письма HTML $mail->Subject = $_POST['title']; // тема письма // если был файл, то прикрепляем его к письму if(isset($_FILES['attachfile'])) { if($_FILES['attachfile']['error'] == 0){ $mail->AddAttachment($_FILES['attachfile']['tmp_name'], $_FILES['attachfile']['name']); } } // если было изображение, то прикрепляем его в виде картинки к телу письма. if(isset($_FILES['attachimage'])) { if($_FILES['attachimage']['error'] == 0){ if (!$mail->AddEmbeddedImage($_FILES['attachimage']['tmp_name'], 'my-attach', 'image.gif', 'base64', $_FILES['attachimage']['type'])) die ($mail->ErrorInfo); $mess .= 'А вот и наша картинка:<br /><img src="cid:image.gif" border=0><br />я показал как ее прикреплять, соответственно Вам осталось вставить ее в нужное место Вашего письма ;-) '; } } $mail->Body = $mess; // отправляем наше письмо if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo); echo 'Спасибо! Ваше письмо отправлено.'; } function output_err($num) { $err[0] = 'ОШИБКА! Не введено имя.'; $err[1] = 'ОШИБКА! Неверно введен e-mail.'; $err[2] = 'ОШИБКА! Не введено сообщение.'; echo '<p>'.$err[$num].'</p>'; show_form(); exit(); } if (!empty($_POST['submit'])) complete_mail(); else show_form(); ?>
Тему можно закрывать. Всем спасибо за помощь!!!
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot