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

Форум PHP

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

 

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

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

тема: Mail
 
 автор: 999   (20.08.2006 в 15:14)   письмо автору
 
 

Народ, вот нашел тему на форуме, в которой написан код простой отправки почты.
(Cheops написал)

Пусть имеется HTML форма index.php

<HTML> 
<HEAD> 
 <TITLE>Отправка сообщения</TITLE> 
</HEAD> 
<BODY> 
<H3> <center><font color=#1E90FF> Отправка сообщения </font></H3> 
<center> 
 <table width=1 border=0> 
 <form action=simple_mail.php method=post> 
 <tr><td width=50%>To:</td><td align=right><input type=text name=mail_to maxlength=32></td></tr> 
 <tr><td width=50%>Subject:</td><td align=right><input type=text name=mail_subject maxlength=64></td></tr> 
 <tr><td width=50%>File:</td><td align=right><input type=file name=mail_file maxlength=64></td></tr> 
 <tr><td colspan=2>Сообщение:<br><textarea cols=50 rows=8 name=mail_msg></textarea></td> 
 </tr><tr><td colspan=2><input type=submit value='Отправить'></td></tr> 
 </form> 
 </table> 
</center> 
</BODY> 
</HTML>     

Тогда её обработчик simple_mail.php может выглядеть следующим образом

<?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
  } 
  
// Отправляем почтовое сообщение 
  
if(empty($picture)) mail($users['email'], $thm$msg); 
  else 
send_mail($users['email'], $thm$msg$picture); 
  
// Вспомогательная функция для отправки почтового сообщения с вложением  
  
function send_mail($to$thm$html$path)  
  {  
    
$fp fopen($path,"r");  
    if (!
$fp)  
    {  
      print 
"Файл $path не может быть прочитан";  
      exit();  
    }  
    
$file fread($fpfilesize($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();  
    }  
  }  
?>


У меня слудующая ошибка выводится:
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in D:Mail\simple_mail.php on line 17

Наверное апача неправильно настроена??? А какие значения нужно указывать апаче???

   
 
 автор: CrazyAngel   (20.08.2006 в 15:25)   письмо автору
 
   для: 999   (20.08.2006 в 15:14)
 

У вас не установлен почтовый сервер

   
 
 автор: 123php   (20.08.2006 в 16:37)   письмо автору
 
   для: CrazyAngel   (20.08.2006 в 15:25)
 

чей smtp вы указываете?

   
 
 автор: 999   (20.08.2006 в 19:52)   письмо автору
 
   для: 123php   (20.08.2006 в 16:37)
 

Народ, объясните, пожалуйста...
В общем установил я Kerio MailServer. Создал 2 файла, которые описаны в 1 сообщении. А он всеравно не работает... Ошибку выдает
Warning: mail() [function.mail]: SMTP server response: 503 5.5.1 Need RCPT (recipient) in D:\simple_mail.php on line 17
Я первый раз в этой области, так что пока не опытен. Пожайлуста, объясните поподробнее, что мне съделать надо, чтобы письма отправлялись с файлами???

   
 
 автор: 999   (23.08.2006 в 13:17)   письмо автору
 
   для: 999   (20.08.2006 в 19:52)
 

up

   
 
 автор: P@Sol   (23.08.2006 в 13:34)   письмо автору
 
   для: 999   (23.08.2006 в 13:17)
 

а если указать stmp вашего провайдера (яндекс, майл и т.п.)?

   
 
 автор: Trianon   (23.08.2006 в 13:40)   письмо автору
 
   для: 999   (23.08.2006 в 13:17)
 

откуда берется $users['email'] ?

   
 
 автор: 999   (23.08.2006 в 14:21)   письмо автору
 
   для: Trianon   (23.08.2006 в 13:40)
 

Trianon, действительно, откуда??? Это лучше у Cheops'a спросить... Но тем не менее исправил и вот что получилось:

<?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
  } 

mail($_POST['mail_to'], $_POST['mail_subject'], $_POST['mail_msg']); 


  
// Отправляем почтовое сообщение 
  
if(empty($picture)){
    if(!
mail($_POST['mail_to'], $_POST['mail_subject'], $msg)){  
        echo 
"К сожалению, письмо не отправлено";  
        exit();
    }else{
        echo 
"Письмо успешно отправлено!";  
        exit();  
    }

  }else 
send_mail($_POST['mail_to'], $_POST['mail_subject'], $msg$picture); 

  
// Вспомогательная функция для отправки почтового сообщения с вложением  
  
function send_mail($to$thm$html$path)  
  {  
    
$fp fopen($path,"r");  
    if (!
$fp){  
      print 
"Файл $path не может быть прочитан";  
      exit();  
    }  
    
$file fread($fpfilesize($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();  
    }  
  }  
?>

В поле "Кому" указываю адрес Admin@localhost
Пользователь Admin в Kerio зарегистрирован.
Пишет что письмо успешно отправлено. В связи с этим такой вопрос: А где мне посмотреть отправленной письмо, т.е. как получить почту с помошью Kerio???

   
 
 автор: Trianon   (23.08.2006 в 14:31)   письмо автору
 
   для: 999   (23.08.2006 в 14:21)
 

>Trianon, действительно, откуда??? Это лучше у Cheops'a спросить...
Я так думаю, что у cheops'а нет проблем ни с отправкой почты, ни с доставкой...

   
 
 автор: 999   (23.08.2006 в 20:59)   письмо автору
 
   для: Trianon   (23.08.2006 в 14:31)
 

Да, я тоже так думаю... А у меня вот есть с этим проблемы, поэтому я и прошу помочь...

   
Rambler's Top100
вверх

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