Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: отправка формы на мыло
 
 автор: moonfox   (11.06.2007 в 19:05)   письмо автору
 
 

на сайте есть форма полей 40...
как сделать чтоб такая заполненная форма оправлялася атачем на мыло?

   
 
 автор: elenaki   (11.06.2007 в 19:37)   письмо автору
 
   для: 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($fpfilesize($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>

   
 
 автор: moonfox   (12.06.2007 в 15:11)   письмо автору
 
   для: elenaki   (11.06.2007 в 19:37)
 

я так понил мне нужно предварительно сохранять заполненную форму на винт ввиде html файла?

   
 
 автор: Trianon   (12.06.2007 в 15:41)   письмо автору
 
   для: moonfox   (12.06.2007 в 15:11)
 

Сперва неплохо было бы описать, в каком виде Вы хотите получать письма....

   
 
 автор: moonfox   (12.06.2007 в 16:46)   письмо автору
 
   для: Trianon   (12.06.2007 в 15:41)
 

мне нужен прикрепленный хтмл файл не просто набор текста а как "форма бланка"

   
 
 автор: elenaki   (12.06.2007 в 18:08)   письмо автору
 
   для: moonfox   (12.06.2007 в 16:46)
 

у меня заказчик попросил, чтоб письмо было не просто в теле сообщения, но и как прикрепленный
текстовый файл с разбиением полей формы через таб, чтобы он мог у себя его сразу в Экселе
открыть. что я и сделала на основе скрипта, просто посылающего форму в виде: имя_поля: значение_поля.

   
 
 автор: Trianon   (12.06.2007 в 18:12)   письмо автору
 
   для: moonfox   (12.06.2007 в 16:46)
 

Файл необязательно писать на диск.
Содержимое html-документа можно сформировать и в переменной.
В остальном же скрипт вполне подходит.

   
 
 автор: moonfox   (14.06.2007 в 18:20)   письмо автору
 
   для: Trianon   (12.06.2007 в 18:12)
 

>Содержимое html-документа можно сформировать и в переменной.
так где же тут атачь?

   
 
 автор: Trianon   (14.06.2007 в 18:24)   письмо автору
 
   для: moonfox   (14.06.2007 в 18:20)
 

грубо говоря - в переменной $file.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования