|
|
|
| Тема возникает достаточно часто, поэтому, принято решение оформить это небольшое Web-приложение в виде отдельного примера в разделе PHP-скрипты.
http://www.softtime.ru/scripts/mailattach.php | |
|
|
|
|
|
|
|
для: cheops
(31.07.2005 в 12:56)
| | Жалко, но не работает ваша форма :(
для начала обратите внимание на строки 17 и 18 ;)
---------------------------------------------
$thm = $_POST['mail_subject']
$msg = "$_POST['mail_msg']";
---------------------------------------------- | |
|
|
|
|
|
|
|
для: Alex.W
(31.07.2005 в 23:49)
| | Исправленная версия. Правда проверял на локальном хосте. Так, что не знаю доходит ли с вложением. Но текст точно доходит. Если cheops'у будет интересно могу выложить строки с ошибками.
<?php
if(empty($_POST['mail_to'])) exit("Введите адрес получателя");
// проверяем правильности заполнения с помощью регулярного выражения
if (!preg_match("/^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i", $_POST['mail_to'])) exit("Введите адрес в виде somebody@server.com");
$_POST['mail_to'] = htmlspecialchars(stripslashes($_POST['mail_to']));
$_POST['mail_subject'] = htmlspecialchars(stripslashes($_POST['mail_subject']));
$_POST['mail_msg'] = htmlspecialchars(stripslashes($_POST['mail_msg']));
$picture = "";
// Если поле выбора вложения не пустое - закачиваем его на сервер
if (!empty($_FILES['mail_file']['tmp_name']))
{
// Закачиваем файл
$path = $_FILES['mail_file']['name'];
if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path;
}
$thm = $_POST['mail_subject'];
$msg = $_POST['mail_msg'];
$to = $_POST['mail_to'];
// Отправляем почтовое сообщение
if(empty($picture)) mail($to, $thm, $msg);
else send_mail($to, $thm, $msg, $picture);
// Вспомогательная функция для отправки почтового сообщения с вложением
function send_mail($to, $thm, $html, $path)
{
$fp = fopen($path,"r");
if (!$fp)
{
print "Файл $path не может быть прочитан";
exit();
}
$file = fread($fp, filesize($path));
fclose($fp);
$path = substr($path,12);
$boundary = "--".md5(uniqid(time())); // генерируем разделитель
$headers .= "MIME-Version: 1.0\n";
$headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
$multipart .= "--$boundary\n";
$kod = 'koi8-r'; // или $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 = "";
$message_part .= "Content-Type: application/octet-stream";
$message_part .= "; file_name = \"$path\"\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";
$multipart .= "--$boundary\n".$message_part."--$boundary--\n";
if(!mail($to, $thm, $multipart, $headers))
{
echo "К сожалению, письмо не отправлено";
exit();
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Akira
(01.08.2005 в 00:18)
| | >Если cheops'у будет интересно могу выложить строки с ошибками.
Интересует, может опять чего забыл. | |
|
|
|
|
|
|
|
для: cheops
(01.08.2005 в 00:30)
| |
$thm = $_POST['mail_subject']
$msg = "$_POST['mail_msg']";
|
Как видно пропущена ";"
Потом использовалось переменная $users['email'] которой не существовало, ее я заменил на переменную $to
Вот и все. | |
|
|
|
|
|
|
|
для: Akira
(01.08.2005 в 00:39)
| | Точку с запятой после $thm пропустил, спасибо. | |
|
|
|
|
|
|
|
для: Akira
(01.08.2005 в 00:18)
| | текст доходит, вложение нет | |
|
|
|
|
|
|
|
для: Alex.W
(01.08.2005 в 10:44)
| | Спасбо, за терпение при тестировании, если вам не сложно, проверьте новый вариант скрипта.
http://www.softtime.ru/scripts/mailattach.php | |
|
|
|
|
|
|
|
|
для: cheops
(01.08.2005 в 00:28)
| | Ошибка пропущена ";"
$thm = $_POST['mail_subject']
$msg = $_POST['mail_msg'];
|
| |
|
|
|
|
|
|
|
для: Akira
(01.08.2005 в 00:41)
| | А можно ли сделать так что-бы етот человек получил афтоматически письмо на свой почтовий адресс, типа "спасибо товарищ..."
И ешё, я бы хотел что бы можно было послать только файлы типа "image" (.jpg, .gif, ...)
Спасибо ещё раз | |
|
|
|
|
|
|
|
для: cccp
(01.08.2005 в 13:19)
| | Можно, но давайте для этого новую тему заведём. | |
|
|
|
|
|
|
|
для: cheops
(01.08.2005 в 13:28)
| | давайте | |
|
|
|
|
|
|
|
для: cccp
(01.08.2005 в 16:16)
| | Привет ребята ещё раз!
Слушайте, помогите пожалуста составить скрипт обробатывающий мой формуляр.
У меня в формуляре есть такие ячейки:
<input name="name" type="text" value="">
<input name="mail" type="text" value="">
<input name="date" type="text" value="">
<input name="cheveux" type="text" value="">
<input name="yeux" type="text" value="">
<input name="taille" type="text" value="">
<textarea name="expirience" cols="18" wrap="VIRTUAL"></textarea>
<textarea name="lettre" cols="50" rows="04" wrap="VIRTUAL" id="EmailforIgostaCasting" style="font-size:11px;" onFocus="if(this.value=='Votre message...')this.value='';">Votre message...</textarea>
<input name="photos" type="file" id="photos">
|
А ето обробатывающий скрипт:
<?php
include("data/config.inc1.php");
if($_POST['mail']=="" or $_POST['mail']=="[Votre boite]") {
$mess="Vous devez indiquer votre <u>Adresse E-mail</u>!"; $title="Erreur!";
} elseif(!strstr($_POST['mail'],"@") or !strstr($_POST['mail'],".")) {
$mess="Votre adresse <u>exacte</u> est nécéssaire pour l'envoi de votre message."; $title="Erreur!";
} elseif (!isset($_POST['lettre']) or $_POST['lettre']=="") {
$mess="Votre <u>message est nécéssaire</u> pour effectuer l'envoi de cette lettre..."; $title="Erreur!";
} else {
if(!isset($_POST['name']) or $_POST['name']=="[Votre nom]") $_POST['name']="anonymous";
$body=strip_tags($_POST['lettre']);
$headers ="From: ".strip_tags($_POST['name'])."<".strip_tags($_POST['mail']).">\n";
$headers.="X-Sender: TSB Mailer\n";
$headers.="Content-Type: text/html; charset=".$sendchar;
$sign=array("\r","\n");
$ch=array("","");
mail($sendmail,$sendtheme,$body,$headers);
$his_f=fopen("data/history.txt","a+");
fputs($his_f,"\n".mktime().":|:".strip_tags($_POST['name']).":|:".strip_tags($_POST['mail']).":|:".str_replace($sign,$ch,strip_tags($_POST['lettre'])));
fclose($his_f);
$mess="<font color='#cccccc' size='2'><br><br><br><br>Votre message a été envoyé avec succes!<br>Merci.</font>"; $title="Message envoyé avec succes!"; $sent="ok";
}
?>
<html>
<head><title><?php echo $title; ?></title><meta http-equiv="Content-Type" content="text/html; charset=windows-1250"></head>
<style>
a:link {color:blue; text-decoration:none; font-size:11px;}
a:visited {color:blue; text-decoration:none; font-size:11px;}
a:hover {color:#A8A8A8; text-decoration:none; font-size:11px;}
a:active {color:#A8A8A8; text-decoration:none; font-size:11px;}
.mess {font-family:verdana;font-size:12px;text-align:center;}
</style>
<BODY bgcolor="5E514A" style="scrollbar-face-color:#5E514A;scrollbar-track-color:#5E514A;scrollbar-shadow-color:#392F2A;scrollbar-highlight-color:#392F2A;scrollbar-3dlight-color:#5E514A;scrollbar-darkshadow-color:#79665D">
<?php
if(isset($sent) and $sent=="ok") echo '<p class="mess"><b>'.$mess.'</b>';
else echo '<p class="mess"><b><font color=red><br><br><br><br>Erreur: </font>'.$mess.'</b>';
?>
<div align="center"></div>
<div align="center"></div>
<div align="center"></div>
<p align="center"><br>
<br>
<a href="show_form1.php" title=<?php echo $_SERVER['HTTP_REFERER']; ?>><font color="#999999" face="Arial, Helvetica, sans-serif">[retour]</font></a><font face="Arial, Helvetica, sans-serif"><br>
<A href=# onclick="window.close()"><font color="#999999">fermer</font></A></font></p>
</body>
</html>
|
Как вы поняли я добавил кое какие ячейки сам, а в обробатывающием скрипте отмечены толко 3.
Проблема в том что, я хотел-бы добавить и остальные , а потом загвоздка вся состоит из того что я бы хотел что-бы к письму можно было-бы прикреплять только фото файлы (что бы всякую фигню не слали, а только то что мне надо).
Ну и хотелось бы что бы после отправки мне этого писма люди получили бы на свою почту писмо с благодарностью.
Как вы поняли этот формуляр отправляется через файл в котором прописан мой почтовый адресс "data/config.inc1.php"
Пожалуста помогите братцы окробатцы! | |
|
|
|
|
|
|
|
для: cccp
(02.08.2005 в 03:53)
| | Добавьте строки вида
<?php
$_POST['mail_msg'] .= "name - ".$_POST['name']."<br>";
$_POST['mail_msg'] .= "mail - ".$_POST['mail']."<br>";
$_POST['mail_msg'] .= "date - ".$_POST['date']."<br>";
$_POST['mail_msg'] .= "cheveux - ".$_POST['cheveux']."<br>";
$_POST['mail_msg'] .= "yeux - ".$_POST['yeux']."<br>";
$_POST['mail_msg'] .= "taille - ".$_POST['taille']."<br>";
$_POST['mail_msg'] .= "lettre - ".$_POST['lettre']."<br>";
?>
|
Для проверки файла фотографии добавьте строки
<?php
// Извлекаем из имени файла расширение
$ext = strrchr($_FILES['photos']['name'], ".");
// Разрешаем загружать файлы только определённого форматм
$extentions = array(".jpg",".gif");
// Формируем путь к файлу
if(!in_array($ext, $extentions)) exit("Недопустимый формат файла");
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(02.08.2005 в 12:43)
| | Спасибо ещё раз cheops!
И что совсем не важно куда именно добавить эти строки? Или-же после определлённых строк?
Потом, надо-ли что бы они все были в отдельных от всех <?php ?> | |
|
|
|
|
|
|
|
для: cccp
(02.08.2005 в 13:10)
| | Первый блок следует добавить после строки
<?php
$_POST['mail_msg'] = htmlspecialchars(stripslashes($_POST['mail_msg']));
?>
|
а второй перед строкой
<?php
if (!empty($_FILES['mail_file']['tmp_name']))
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(02.08.2005 в 13:26)
| | OK ;)
Mucha, mucha Gracias ! | |
|
|
|
|
|
|
|
для: cccp
(02.08.2005 в 23:23)
| | Подожди, чё то я не понял.
Это вы мне для вашего напислали, а я в своём ищю эти строки.
Извените меня , но я хотел бы использовать это в моём обробатывающем скрипте.
Я тут попробовал сам всё сделать , но застрял и обсалютно запутался. Помогите доделать.
<?php
include("data/config.inc.php");
if($_POST['mail']=="" or $_POST['mail']=="[Votre boite]") {
$mess="Vous devez indiquer votre <u>Adresse E-mail</u>!"; $title="Erreur!";
} elseif(!strstr($_POST['mail'],"@") or !strstr($_POST['mail'],".")) {
$mess="Votre adresse <u>exacte</u> est nécéssaire pour l'envoi de votre message."; $title="Erreur!";
} elseif (!isset($_POST['date']) or $_POST['date']=="") {
$mess="Votre date de naissance est nécéssaire</u> pour effectuer l'envoi de cette lettre..."; $title="Erreur!";
} elseif (!isset($_POST['cheveux']) or $_POST['cheveux']=="") {
$mess="Votre couleur de cheveux est nécéssaire</u> pour effectuer l'envoi de cette lettre..."; $title="Erreur!";
} elseif (!isset($_POST['yeux']) or $_POST['yeux']=="") {
$mess="Votre couleur de yeux est nécéssaire</u> pour effectuer l'envoi de cette lettre..."; $title="Erreur!";
} elseif (!isset($_POST['taille']) or $_POST['taille']=="") {
$mess="Votre taille est nécéssaire</u> pour effectuer l'envoi de cette lettre..."; $title="Erreur!";
} elseif (!isset($_POST['expirience']) or $_POST['expirience']=="") {
$mess="Votre expirience est nécéssaire</u> pour effectuer l'envoi de cette lettre..."; $title="Erreur!";
} elseif (!isset($_POST['lettre']) or $_POST['lettre']=="") {
$mess="Votre <u>message est nécéssaire</u> pour effectuer l'envoi de cette lettre..."; $title="Erreur!";
} elseif (!isset($_POST['photos']) or $_POST['photos']=="") {
$mess="Vos photos sont nécéssaire</u> pour effectuer l'envoi de cette lettre..."; $title="Erreur!";
$picture = "";
// Esli pole vybora vlozhenija ne pustoe - zakachivaem ego na server
if (!empty($_FILES['photos']['tmp_name']))
{
// Zakachivaem fajl
$path = $_FILES['photos']['name'];
// Izvlekaem iz imeni fajla rasshirenie
$ext = strrchr($_FILES['photos']['name'], ".");
// Razreshaem zagruzhat' fajly tol'ko opredeljonnogo formatm
$extentions = array(".jpg",".gif");
// Formiruem put' k fajlu
if(!in_array($ext, $extentions)) exit("Le format de fichier est interdit !");
if (copy($_FILES['photos']['tmp_name'], $path)) $picture = $path;
} else {
if(!isset($_POST['name']) or $_POST['name']=="[Votre nom]") $_POST['name']="anonymous";
$body=strip_tags($_POST['lettre']);
$headers ="From: ".strip_tags($_POST['name'])."<".strip_tags($_POST['mail']).">\n";
$headers.="X-Sender: TSB Mailer\n";
$headers.="Content-Type: text/html; charset=".$sendchar;
$sign=array("\r","\n");
$ch=array("","");
mail($sendmail,$sendtheme,$body,$headers);
$mess="<font color='#cccccc' size='2'><br><br><br><br>Votre message a été envoyé avec succes!<br>Merci.</font>"; $title="Message envoyé avec succes!"; $sent="ok";
}
?>
<html>
<head><title><?php echo $title; ?></title><meta http-equiv="Content-Type" content="text/html; charset=windows-1250"></head>
<style>
a:link {color:blue; text-decoration:none; font-size:11px;}
a:visited {color:blue; text-decoration:none; font-size:11px;}
a:hover {color:#A8A8A8; text-decoration:none; font-size:11px;}
a:active {color:#A8A8A8; text-decoration:none; font-size:11px;}
.mess {font-family:verdana;font-size:12px;text-align:center;}
</style>
<BODY bgcolor="5E514A" style="scrollbar-face-color:#5E514A;scrollbar-track-color:#5E514A;scrollbar-shadow-color:#392F2A;scrollbar-highlight-color:#392F2A;scrollbar-3dlight-color:#5E514A;scrollbar-darkshadow-color:#79665D">
<?php
if(isset($sent) and $sent=="ok") echo '<p class="mess"><b>'.$mess.'</b>';
else echo '<p class="mess"><b><font color=red><br><br><br><br>Erreur: </font>'.$mess.'</b>';
?>
<div align="center"></div>
<div align="center"></div>
<div align="center"></div>
<p align="center"><br>
<br>
<a href="show_form.php" title=<?php echo $_SERVER['HTTP_REFERER']; ?>><font color="#999999" face="Arial, Helvetica, sans-serif">[retour]</font></a><font face="Arial, Helvetica, sans-serif"><br>
<A href=# onclick="window.close()"><font color="#999999">fermer</font></A></font></p>
</body>
</html>
|
| |
|
|
|