| |
|
|
| | на сайте есть форма полей 40...
как сделать чтоб такая заполненная форма оправлялася атачем на мыло? | |
| |
|
|
| |
|
|
| |
для: moonfox
(11.06.2007 в 19:05)
| | | вот код. недавно делала, тестировала, работает
<?
$fMail = "mail@mail.ru"; /// тут ваш адрес
$fText=$_POST["fSubject"]."\r\n"; //// тема письма передается в скрытом поле формы
for ($i=0;$i<$_POST["fCount"];$i++) {$fText2.=$_POST["fName"][$i].";".$_POST["fData"][$i]."\r\n";}
//// тут сколько угодно полей. каждое поле имеет имя fName[] и около него скрытое поле fData[]
с тем же номером
$fd = fopen ("attach/jobs.txt", "w"); /// открываем файл
fwrite($fd, $fText2); /// пишем в файл
fclose ($fd); //// закрываем файл
$path = "attach/".$_POST["fData"][0].".txt"; /// строим путь к файлу
if ( rename("attach/jobs.txt","attach/".$_POST["fData"][0].".txt")) $attachment = $path;
/// тут я переименовывала файл в значение одного из полей, так надо было
///////// headers
//$boundary = "--".md5(uniqid(time()));
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-Type: text/html; charset=windows-1253\n"; /// кодировка - 1251
$headers .= "From: ".$_POST["fData"][2]."\r\n\r\n"; //// здесь в форме было поле e-mail, подставляем его, чтоб по клику на Ответить, адрес вставал в поле получателя
// function to send an attachment
function send_mail($mail_to, $thema, $html, $path)
{ if ($path) {
$fp = fopen($path,"r");
if (!$fp)
{ print "Cannot open file";
exit();
}
$file = fread($fp, filesize($path));
fclose($fp);
}
$name = $_POST["fData"][0].".txt"; // imya fayla bez puti
$EOL = "\n"; // ogranichitel' strok
$boundary = "--".md5(uniqid(time()));
$headers = "MIME-Version: 1.0;$EOL";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";
$headers .= "From: ".$_POST["fData"][2];
$multipart = "--$boundary$EOL";
$multipart .= "Content-Type: text/html; charset=windows-1253$EOL"; /// тут кодировка 1251 для кириллицы
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= $EOL; // razdel mejdy zagolovkom i telom html-chasti
$multipart .= chunk_split(base64_encode($html));
$multipart .= "$EOL--$boundary$EOL";
$multipart .= "Content-Type: application/octet-stream; name=\"$name\"$EOL";
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";
$multipart .= $EOL; // razdel mejdy zagolovkom i telom prikl.fayla
$multipart .= chunk_split(base64_encode($file));
$multipart .= "$EOL--$boundary--$EOL";
if(!mail($mail_to, $thema, $multipart, $headers))
return False; //esli NE poslano
else //// esli poslano
return True;
exit;
} //// end of function
$fText2.="\r\n";
$fText2.= date("l dS of F Y h:i:s A"); // это просто так, можно убрать
if (send_mail($fMail, $f_POST["Subject"], $fText.$fText2, $path)) {
Header("Location: ".$_POST["fOk"]);}
else {Header("Location: ".$_POST["fBad"]);}
exit;
?>
|
а в форме вот так:
<td>Name</td>
<td><input type="hidden" name="fName[1]" value="Name">
<input type=text size="48" name="fData[1]"> </td>
|
| |
| |
|
|
| |
|
|
| |
для: elenaki
(11.06.2007 в 19:37)
| | | я так понил мне нужно предварительно сохранять заполненную форму на винт ввиде html файла? | |
| |
|
|
| |
|
|
| |
для: moonfox
(12.06.2007 в 15:11)
| | | Сперва неплохо было бы описать, в каком виде Вы хотите получать письма.... | |
| |
|
|
| |
|
|
| |
для: Trianon
(12.06.2007 в 15:41)
| | | мне нужен прикрепленный хтмл файл не просто набор текста а как "форма бланка" | |
| |
|
|
| |
|
|
| |
для: moonfox
(12.06.2007 в 16:46)
| | | у меня заказчик попросил, чтоб письмо было не просто в теле сообщения, но и как прикрепленный
текстовый файл с разбиением полей формы через таб, чтобы он мог у себя его сразу в Экселе
открыть. что я и сделала на основе скрипта, просто посылающего форму в виде: имя_поля: значение_поля. | |
| |
|
|
| |
|
|
| |
для: moonfox
(12.06.2007 в 16:46)
| | | Файл необязательно писать на диск.
Содержимое html-документа можно сформировать и в переменной.
В остальном же скрипт вполне подходит. | |
| |
|
|
| |
|
|
| |
для: Trianon
(12.06.2007 в 18:12)
| | | >Содержимое html-документа можно сформировать и в переменной.
так где же тут атачь? | |
| |
|
|
| |
|
|
| |
для: moonfox
(14.06.2007 в 18:20)
| | | грубо говоря - в переменной $file. | |
| |
|
|