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

Форум PHP

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

 

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

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

тема: Проблема с отсылкой почты
 
 автор: TuX   (27.08.2005 в 19:15)   письмо автору
 
 

Данный скрипт нежелает отсылать почту на адреса почты такого вида xxx@xxx-xxx.ru
Может дело в тире xxx-xxx?
На адреса вида xxx@xxx.ru отсылает нормально. В чем проблемма


<?php
    
include("./mail_class.php");
    
$mail = new Mail();
    
$mail -> to "xxx@xxx-xxx.ru"//адрес вымышленный
    //сюда подставляется реальный адрес
    
$mail -> subject "письмо с сайта";
    
// Здесь получаем текст письма из формы, предварительно обработав на безопасность
    
$_POST['FIO'] = htmlspecialchars(stripslashes($_POST['FIO']));
    
$_POST['eMail'] = htmlspecialchars(stripslashes($_POST['eMail']));
    
$_POST['msg'] = htmlspecialchars(stripslashes($_POST['msg']));
    
$msg $_POST['FIO']."[br]".$_POST['eMail']."[hr]".$_POST['msg'];
    
$msg str_replace("[br]","<br>",$msg);
    
$msg str_replace("[hr]","<hr>",$msg);
    
$mail -> msg $msg;
    
$mail -> rigorous_email_check 0;
    if(
$mail->send()){
        echo(
"<div align=center><br><br><br><br><br><br><br>Письмо отправлено!");
    }else{
        echo(
"Ошибка при отправлении письма");
    }
    echo(
"<br>");
    echo(
$mail -> msg);
    echo(
"</div>");   
?> 

   
 
 автор: cheops   (27.08.2005 в 21:04)   письмо автору
 
   для: TuX   (27.08.2005 в 19:15)
 

Класс mail_class.php чей и через что он оправляет почту через функцию mail(), почтовые ретрансляторы и где происходит тестирование системы на локальной машине или на сервере. Если на локальной машине, то установлен ли транспортный почтовый агент.

   
 
 автор: gotbar   (27.08.2005 в 21:28)   письмо автору
 
   для: TuX   (27.08.2005 в 19:15)
 

Может посмотреть в пхп логах, какую ошибку скрипт выдает? Или пхп выводит в браузер сообщение об ошибке?

   
 
 автор: TuX   (27.08.2005 в 21:52)   письмо автору
 
   для: gotbar   (27.08.2005 в 21:28)
 

Класс взят от куда-то с вашего форума. Вот код класса

<?php
  
class Mail 
  
{
  
// создаем переменные, в которых хранится содержимое заголовков
  
var $to '';
  var 
$from '';
  var 
$reply_to '';
  var 
$cc '';
  var 
$bcc '';
  var 
$subject '';
  var 
$msg '';
  var 
$validate_email true
  
// проверяет допустимость почтовых адресов
  
var $rigorous_email_check true
  
// проверяет допустимость доменных имен по записям DNS
  
var $allow_empty_subject false
  
// допустимость пустого поля subject
  
var $allow_empty_msg false
  
// допустимость пустого поля msg
    
  
var $headers = array();   
  
/* массив $headers содержит все поля заголовка, кроме to и subject*/
    
  
function check_fields()
    
/* метод, проверяющий, переданы ли все значения заголовков
    и проверку допустимости почтовых адресов */
  
{
    if(empty(
$this -> to))
    {
      return 
false;       
    }
    if(!
$this -> allow_empty_subject && empty($this -> subject))
    {
      return 
false;       
    }
    if(!
$this -> allow_empty_msg && empty($this -> msg))
    {
      return 
false;       
    }
    
/* если есть дополнительные заголовки, помещаем их в массив $headers*/
    
if(!empty($this -> from))
    {
      
$this->headers[] = "From: $this -> from";
    }
    if(!empty(
$this -> reply_to))
    {
      
$this -> headers[] = "Reply_to: $this -> reply_to";
    } 
    
// проверяем допустимость почтового адреса      
    
if ($this -> validate_email)
    {
       if (!
preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i"$this -> to))
       {
          return 
false;
       }
       return 
true;
    }
  }
    
  function 
send()
  
/* метод отправки сообщения */
  
{
     if(!
$this -> check_fields()) return true;
          if (
mail($this -> totrim($this -> subject),
        
trim($this -> msg)))
     {
        return 
true;
     }else{
        return 
false;
     } 
  }
}
?>


Все файлы лежат в папке mail:
1. файл с кодом формы, которая инклудится потом в страницу, находящуюся уровнем выше;
2. файл с кодом приведенным в первом посе;
3. класс

   
 
 автор: gotbar   (27.08.2005 в 22:27)   письмо автору
 
   для: TuX   (27.08.2005 в 21:52)
 

У вас в этой строчке стоит запрет на все символы, которые НЕ разрешены в вашем регулярном выражении:

if ($this -> validate_email)
{
if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $this -> to))

Попробуйте переписать так



Apropo: Как делать скрипты в цвете тут на форуме? Кто-нить подскажет?

if ($this -> validate_email) 
    { 
       if (!preg_match("/[0-9a-z_]+@[0-9a-z-_^\.]+\.[a-z]{2,3}/i", $this -> to)) 

   
 
 автор: TuX   (27.08.2005 в 23:11)   письмо автору
 
   для: gotbar   (27.08.2005 в 22:27)
 

СПАСИБО!

   
Rambler's Top100
вверх

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