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

Форум PHP

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

 

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

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

тема: Fatal error: Call to undefined function send_mail()
 
 автор: bax   (04.02.2008 в 12:56)   письмо автору
 
 

Здр-те, Всем!
Такая вот история;
Есть форма для отправки почты с вложением с сайта.
С полями:
Ваше имя - name = mail_subject
Ваш E-mail - name = mail_from
Ваше сообщение - name = mail_msg
Выбор вложения - name = mail_file
Письмо без вложения отправляется на ура!
А как дело доходит до send_mail так стоп!
Fatal error: Call to undefined function send_mail()
Подскажите, почему?
Заранее благодарю.
<?php

$status 
"Ваше сообщение";
$mail_to "yy@aa.ru";
$charset "windows-1251";
$subject "Письмо с сайта http://pupkin.ru";
@
extract($_SERVEREXTR_SKIP); @extract($_POSTEXTR_SKIP); @extract($_GETEXTR_SKIP);

  if (isset(
$_POST['mail_subject']) && $mail_subject == "")
{
$status "Введите Baше имя";
}
  elseif (isset(
$_POST['mail_from']) && $mail_from == "")
{
$status "$Введите Baш E-mail";
}

  elseif(isset(
$_POST['mail_from']) && !preg_match("/^([a-z,._,0-9])+@([a-z,._,0-9])+(.([a-z])+)+$/"$mail_from))
{
$status "Введите адрес в формате (yy@aa.ru)";

unset(
$mail_from);
}
  elseif (isset(
$_POST['mail_msg']) && $mail_msg == "")
{
$status "Введите Baше сообщение";
}
  elseif (isset(
$_POST['mail_msg']) && preg_match("/([$|^|&|*|#|@])/"$mail_msg))
{
$status "Некорректное сообщение";

unset(
$mail_msg);
}
  elseif (!empty(
$_POST))
{
  
$_POST['mail_from'] = htmlspecialchars(stripslashes($_POST['mail_from']));
  
$_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'];
  
$mail_from $_POST['mail_from'];
  
// Отправляем почту
  
if (empty($picture))
{
$headers  "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: charset=$charset\r\n";
$headers .= "Date: ".date("Y-m-d (H:i:s)",time())."\r\n";
$headers .= "From: \"$thm\" <$mail_from>\r\n";
$headers .= "X-Mailer: My Send E-mail\r\n";

mail("$mail_to","$subject","$msg","$headers");

$status "Ваше сообщение отправлено";
}
else 
send_mail($mail_to$thm$mail_from$msg$picture);
  
// Вспомогательная функция для отправки почты с вложением
  
function send_mail($to$thm$mail_from$html$path)
  {
    
$fp fopen($path,"r");
    if (!
$fp)
    {
      print 
"Файл $path не может быть прочитан";
      exit();
    }
    
$file fread($fpfilesize($path));
    
fclose($fp);

    
$boundary "--".md5(uniqid(time()));
    
$headers .= "MIME-Version: 1.0\n";
    
$headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
    
$headers .= "From: $mail_from\r\n";
    
$multipart .= "--$boundary\n";
    
$kod 'windows-1251';
    
$multipart .= "Content-Type: text/plain; charset=$kod\n";
    
$multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
    
$multipart .= "$html\n\n";

    
$message_part "--$boundary\n";
    
$message_part .= "Content-Type: application/octet-stream\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 .= $message_part."--$boundary--\n";

    if(!
mail($to$thm$multipart$headers))
    {
      exit(
"К сожалению, письмо не отправлено");
    }
  }
}
?>

   
 
 автор: cheops   (05.02.2008 в 14:00)   письмо автору
 
   для: bax   (04.02.2008 в 12:56)
 

Попробуйте поместить функцию в начало... так иногда бывает, особенно, если весь фрагмент заключается в блок try{...}catch(){...}

   
 
 автор: bax   (05.02.2008 в 18:18)   письмо автору
 
   для: cheops   (05.02.2008 в 14:00)
 

Спасибо сейчас попробую

   
 
 автор: bax   (05.02.2008 в 19:32)   письмо автору
 
   для: bax   (05.02.2008 в 18:18)
 

Не подскажите или не покажите в коде где именно поставить sand_mail();

   
 
 автор: kasmanaft   (05.02.2008 в 19:45)   письмо автору
 
   для: bax   (05.02.2008 в 19:32)
 

У вас вот что получилось:
<?php

if (true) {
    
print_true();
}

if (
true) {
    
    function 
print_true() {
        print 
"true";
    }

}

?>

Выдает знакомое "Call to undefined function".

Попробуйте вынести свою
function send_mail($to, $thm, $mail_from, $html, $path)
{
   ...
   ...
}

в конец файла.

   
 
 автор: bax   (06.02.2008 в 00:45)   письмо автору
 
   для: kasmanaft   (05.02.2008 в 19:45)
 

Всю function send_mail с телом
поставил на верх и все заработало.
БЛАГОДАРЮ!

   
Rambler's Top100
вверх

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