Форма отправки письма.

Статус
В этой теме нельзя размещать новые ответы.

rijy

Гуру форума
Регистрация
3 Ноя 2007
Сообщения
250
Реакции
80
Здравствуйте уважаемые!
Возникли траблы с формой отправки сообщения с сайта. Т.е. человек вводит в форму все необходимые данные, нажимает "Отправить" и я на свое мыло получаю письмо с введенными данными.
Нашел такой скрипт с необходимым функционалом, однако он наотрез отказывается отправлять письма(
Пробовал с разных хостингов, на разные мейлы - результат негативный(
Буду благодарен за любые советы.
Вот код самой формы:
Код:
<form action="action_mail.php" method="post" enctype="multipart/form-data">
<center>Ваш E-mail:</center><input type="text" name="from"><br>
<center>Тема:</center><input type="text" name="subj"><br>
Сообщение:<br><textarea cols="50" rows="10" name="text"></textarea><br>
Файл: <input type="file" name="file"><br>
<input type="submit" name="submit" value="Отправить">
</form>

Вот код скрипта отправки:
Код:
<?
//Функция проверки переменной
function html_filter($str) {
    $result = HTMLSpecialChars($str);
    return $result;}

//Функция проверки e-mail
function isEmail($email){
    if (eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]+$", $email)){return TRUE;}else{return FALSE;}}

//Функция отправки письма с аттачем
$to = ('моемыло@gmail.com');
function XMail($from, $to, $subj, $text, $filename, $file)
{
$f         = fopen($file,"rb");
$un        = strtoupper(uniqid(time()));
$head      = "From: $from\n";
$head     .= "To: $to\n";
$head     .= "Subject: $subj\n";
$head     .= "X-Mailer: PHPMail Tool\n";
$head     .= "Reply-To: $from\n";
$head     .= "Mime-Version: 1.0\n";
$head     .= "Content-Type:multipart/mixed;";
$head     .= "boundary=\"----------".$un."\"\n\n";
$zag       = "------------".$un."\nContent-Type:text/html;\n";
$zag      .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n";
$zag      .= "------------".$un."\n";
$zag      .= "Content-Type: application/octet-stream;";
$zag      .= "name=\"".basename($filename)."\"\n";
$zag      .= "Content-Transfer-Encoding:base64\n";
$zag      .= "Content-Disposition:attachment;";
$zag      .= "filename=\"".basename($filename)."\"\n\n";
$zag      .= chunk_split(base64_encode(fread($f,filesize($file))))."\n";
if (!@mail("$to", "$subj", $zag, $head))
return 0;
else
return 1;
}


//Получаем данные из формы
if(isset($submit)):
//Проверяем полученные из формы данные
$from = trim(html_filter($from));
$to = trim(html_filter($to));
$subj = trim(html_filter($subj));
$text = trim(html_filter($text));
$text = str_replace("\n", "<br>\n", $text);
$filename = trim(html_filter($file_name));
//Если прикреплен файл
if($filename!="" and $file_size>0):
    if(XMail($from, $to, $subj, $text, $filename, $file)==1){header("Location:?send=ok");}
endif;
//Если Не прикреплен файл
if($filename=="" or $file_size==0):
    if(EMail($from, $to, $subj, $text)==1){header("Location:?send=ok");}
endif;
endif;
?>

Спасибо.
 
подправил.. все равно не хочет работать(
может быть кто-нибудь знает рабочий аналог с похожим функционалом?
главное чтоб файл можно было приложить..
 
подправил синтаксис, добавил чтение переменных из $_POST. Попробуй.

PHP:
<?
$to = 'jik@microsoft.com';

$submit = $_POST['submit'];
$from = $_POST['from'];
$subj = $_POST['subj'];
$text= $_POST['text'];

$file_name = $_FILES['file']['name'];
$tmp_name = $_FILES['file']['tmp_name'];
$file_size = intval($_FILES['file']['size']);

//Функция проверки переменной
function html_filter($str) {
  $result = HTMLSpecialChars($str);
  return $result;
}

//Функция проверки e-mail
function isEmail($email){
  if (eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]+$", $email)) {
    return TRUE;
  } else {
    return FALSE;
  }
}

//Функция отправки письма с аттачем
function XMail($from, $to, $subj, $text, $filename, $file)
{
  $f         = fopen($file,"rb");
  $un        = strtoupper(uniqid(time()));
  $head      = "From: $from\n";
  $head     .= "To: $to\n";
  $head     .= "Subject: $subj\n";
  $head     .= "X-Mailer: PHPMail Tool\n";
  $head     .= "Reply-To: $from\n";
  $head     .= "Mime-Version: 1.0\n";
  $head     .= "Content-Type:multipart/mixed;";
  $head     .= "boundary=\"----------".$un."\"\n\n";
  $zag       = "------------".$un."\nContent-Type:text/html;\n";
  $zag      .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n";
  $zag      .= "------------".$un."\n";
  $zag      .= "Content-Type: application/octet-stream;";
  $zag      .= "name=\"".basename($filename)."\"\n";
  $zag      .= "Content-Transfer-Encoding:base64\n";
  $zag      .= "Content-Disposition:attachment;";
  $zag      .= "filename=\"".basename($filename)."\"\n\n";
  $zag      .= chunk_split(base64_encode(fread($f,filesize($file))))."\n";
  if (mail("$to", "$subj", $zag, $head)) {
    return true;
  } else {
    return false;
  }
}


//Получаем данные из формы
if(isset($submit)) {
  //Проверяем полученные из формы данные
  $from = trim(html_filter($from));
  $to = trim(html_filter($to));
  $subj = trim(html_filter($subj));
  $text = trim(html_filter($text));
  $text = str_replace("\n", "<br>\n", $text);
  $filename = trim(html_filter($file_name));
  $tmpname = trim(html_filter($tmp_name));
  //Если прикреплен файл
  if($filename!="" and $file_size>0) {
    if(XMail($from, $to, $subj, $text, $filename, $tmpname)) {
      echo "xmail() ok<br>";
    } else {
      echo "xmail() failed<br>";
    }
  } else {
    //Если Не прикреплен файл
    echo "before mail() to=$to subj=$subj text=$text<br>";
    if(mail($to, $subj, $text)) {
      echo "mail() ok<br>";
    } else {
      echo "mail() failed<br>";
    }
  }
}
?>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху