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

Форум PHP

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

 

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

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

тема: Отправка письма на электронный ящик при обработке формы
 
 автор: Electron   (09.11.2011 в 15:37)   письмо автору
 
 

Имеется форма:
<form name="form" method="post" action="send.php">
    <input type="text" name="text" />
    <input type="text" name="mail" />
    <input type="checkbox" name="checkbox" />
    <input type="submit" name="submit" value="Send" />
</form>

Нужно, чтобы при обработке формы (send.php) отправлялось письмо на e-mail, а в теле письма отображалась информация из инпутов "text" и "mail". В инете много примеров, но не один у меня не заработал :( Кто-нибудь сможет помочь? :)

  Ответить  
 
 автор: cheops   (09.11.2011 в 16:39)   письмо автору
 
   для: Electron   (09.11.2011 в 15:37)
 

А что вызывает сложность? Просто подставляйте значения $_POST['name'] и $_POST['mail'] в соответствующие параметры функции mail().

  Ответить  
 
 автор: Electron   (09.11.2011 в 18:53)   письмо автору
 
   для: cheops   (09.11.2011 в 16:39)
 

Спасибо :D

Получилось так:
<?
    $to 
'info@mail.ru';
    
$subject 'Title';
    
$message $_POST['text'];
    
mail($to$subject$message);
?>


А как задать имя, от кого приходит письмо? На данный момент у меня получается так:
www-data <www-data@mail.domain.com>

  Ответить  
 
 автор: cheops   (09.11.2011 в 19:04)   письмо автору
 
   для: Electron   (09.11.2011 в 18:53)
 

Нужно добавить четвертый параметр в функцию mail(), в которой задать почтовый заголовок вида
From: somebody@somewhere.ru

  Ответить  
 
 автор: Electron   (09.11.2011 в 19:13)   письмо автору
 
   для: cheops   (09.11.2011 в 19:04)
 

Я так пробовал, такой заголовок идёт в тело письма, а не в заголовок...

  Ответить  
 
 автор: cheops   (09.11.2011 в 19:19)   письмо автору
 
   для: Electron   (09.11.2011 в 19:13)
 

Понятно, тогда нужно добавить два перевода строки
<?php
  $header 
"From: somebody@somewhere.ru\r\n\r\n";
?>

  Ответить  
 
 автор: Electron   (10.11.2011 в 10:58)   письмо автору
 
   для: cheops   (09.11.2011 в 19:19)
 

Ничего не изменилось, я правильно делаю?
<?
    $to 
'info@mail.ru';
    
$subject 'Title';
    
$message 'Text: '.$_POST['text'];
    
$from 'from@mail.ru';
    
$header 'From: from@mail.ru\r\n\r\n';
    
mail($to$subject$message$from$header);
?>

  Ответить  
 
 автор: Electron   (10.11.2011 в 11:05)   письмо автору
 
   для: Electron   (10.11.2011 в 10:58)
 

А, стоп, работает отлично, так:
<?
    $to 
'info@mail.ru';
    
$subject 'Title';
    
$message 'Text: '.$_POST['text'];
    
$header 'From: from@mail.ru"\r\n\r\n';
    
mail($to$subject$message$header);
?> 

Ещё перед переводами строк поставил кавычку, а то письмо приходит вида: from@mail.ru#092
Спасибо! :)
Сейчас буду пытаться вставить в письмо HTML-код, если не получится, спрошу тут, ок? :p

UPD:
А ещё лучше так:
$header = 'From: Name <from@mail.ru>"\r\n\r\n';

  Ответить  
 
 автор: Electron   (10.11.2011 в 12:12)   письмо автору
 
   для: cheops   (09.11.2011 в 19:04)
 

Мне ещё нужно, чтобы была скрытая копия, тело письма форматировалось в HTML и прикреплялся вордовский файл, это должно выглядеть примерно так:
<?
    $to 
'info@mail.ru';
    
$subject 'Title';
    
$filepatch '/patch/file.doc';
    
$file fopen($filepatch,'rb');
    
$message 'Text: <b>'.$_POST['text'].'</b>';
    
$headers 'Content-Type:text/html; charset=utf-8"\r\n';
    
$headers .= 'From: from@mail.ru"\r\n\r\n';
    
$headers .= 'Bcc: secret@mail.ru"\r\n';
    
$body 'name='.basename($filepatch).'\n';
    
$body .= 'Content-Transfer-Encoding:base64n';
    
$body .= 'Content-Disposition:attachmentnn';
    
$body .= base64_encode(fread($file,filesize($filepatch))).'n';
    
mail($to$subject$message$headers$body);
?>

Что сделать, чтобы это всё заработало? :)

  Ответить  
 
 автор: cheops   (10.11.2011 в 12:36)   письмо автору
 
   для: Electron   (10.11.2011 в 12:12)
 

Тут вот какая штука, дело в том что два перевода строки \r\n\r\n служат признаком окончания почтовых заголовков и начала тела документа. Поэтому строка с \r\n\r\n у вас должна быть всегда последней.

  Ответить  
 
 автор: Electron   (10.11.2011 в 15:41)   письмо автору
 
   для: cheops   (10.11.2011 в 12:36)
 

Ну я это примерно понял, но всё же не получается сделать правильный порядок...

К примеру, так нормально отображается от кого, но копия и кодировка не работают:

    $headers = 'From: Name <info@mail.com>"\r\n';
    $headers .= 'Content-Type:text/html; charset=utf-8'"\r\n';
    $headers .= 'Bcc: secret@mail.com"\r\n';

А так работает кодировка, но не работают от кого и копия:

    $headers = 'Content-Type:text/html; charset=utf-8'"\r\n';
    $headers .= 'Bcc: secret@mail.com"\r\n';
    $headers .= 'From: Name <info@mail.com>"\r\n\r\n';

Как же всё-таки правильно расположить переходы строк? чтобы работало всё? Заранее спасибо :)

  Ответить  
 
 автор: cheops   (10.11.2011 в 15:46)   письмо автору
 
   для: Electron   (10.11.2011 в 15:41)
 

А если все-таки убрать кавычки и поступить так
    $headers = 'Content-Type:text/html; charset=utf-8"\r\n'; 
    $headers .= 'Bcc: secret@mail.com\r\n'; 
    $headers .= 'From: Name <info@mail.com>\r\n\r\n';
ситуация не меняется?

  Ответить  
 
 автор: Electron   (10.11.2011 в 15:54)   письмо автору
 
   для: cheops   (10.11.2011 в 15:46)
 

В такой ситуации работает кодировка, без копии, без отправителя...

А вот при таком порядке работает копия, но не работают от кого и кодировка:

    $headers = 'Bcc: secret@mail.com"\r\n';
    $headers .= 'Content-Type:text/html; charset=utf-8'"\r\n';
    $headers .= 'From: Name <info@mail.com>"\r\n';

  Ответить  
 
 автор: Electron   (11.11.2011 в 12:23)   письмо автору
 
   для: cheops   (10.11.2011 в 15:46)
 

В общем работает только тот заголовок, который стоит первым, а остальные нет... Может дело в разделителе между заголовками ($headers)? Помогите, плз :)

  Ответить  
 
 автор: vladislav_vld   (08.12.2011 в 11:47)   письмо автору
 
   для: Electron   (09.11.2011 в 15:37)
 

Может быть не функцией mail лучше воспользоваться, а smtp.

  Ответить  
 
 автор: vladislav_vld   (08.12.2011 в 11:47)   письмо автору
 
   для: Electron   (09.11.2011 в 15:37)
 

Сообщения приходят всегда и в спам не попадут точно. Да вроде и реализовать не так сложно. Почитайте, например здесь:Скрипт отправки сообщений с сайта

  Ответить  
Rambler's Top100
вверх

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