2013-04-16 5 views
0
<?php 
      @require_once"Mail.php"; 

      $from="from email"; //enter email of sender 
      $to="recepient email"; //enter to email 
      $subject="subject"; 

      $body="content"; 

      $host="ssl://smtp.gmail.com"; 
      $port="465"; 
      $username="your gmail account user name"; 
      $pwd="your gmail account password"; 

      $headers = array ('From' => $from, 
          'To' => $to, 
          'Subject' => $subject); 

      $headers["Content-Type"] = 'text/html; charset=UTF-8'; 

      $smtp = @Mail::factory('smtp', 
            array ('host' => $host, 
              'port' => $port, 
              'auth' => true, 
              'username' => $username, 
              'password' => $pwd)); 

      //Send Email using pear sned option 
      $mail = @$smtp->send($to, $headers, $body); 

       //If any errors occurs 
      if (@PEAR::isError($mail)) { 
       ("<p>" . $mail->getMessage() . "</p>"); 
      } 
      else { 
      echo("<p>Message successfully sent!</p>"); 

      }   

?> 

Добавление @ уменьшить ошибку, но все еще есть три ошибки приходят они:проверки, является ли моя почта была отправлена ​​или не

Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\xampp\php\pear\Net\SMTP.php on line 491 

Строгие стандарты: Non-статический метод PEAR :: IsError() не следует называть статически, предполагая $ this из несовместимого контекста в C: \ xampp \ php \ pear \ Net \ SMTP.php в строке 265

Строгие стандарты: нестатический метод PEAR :: raiseError() не должен быть называемый статически, предполагая $ this из несовместимого контекста в C: \ xampp \ php \ pear \ Net \ SMTP.php в строке 267

+0

Невозможно получить отчеты о доставке, и если вы просто хотите, чтобы вы вызывали 'mail()', вы можете просто использовать оператор insert после использования 'mail()' –

+0

. Вы можете использовать квитанции о доставке, но поддержка в лучшем случае. Короткий ответ: нет. – leftclickben

+0

как это сделать ?? – Prashant

ответ

1

Вы можете проверить, была ли почта успешно передана MTA, , вы не можете действительно обнаружить или проверить, была ли почта успешно доставлена ​​получателю. Это другой случай.

Чтобы проверить, была ли отправлена ​​почта:

if (mail('[email protected]',$subject,$body,'From: [email protected]')) 
    return true; 
else 
    return false; 

Так что ваша функция будет:

function email($to,$subject,$body) 
{ 
    if (mail('[email protected]',$subject,$body,'From: [email protected]')) 
     return true; 
    else 
     return false; 
} 

Поскольку почта функция всегда возвращает логическое значение, тт может быть упрощен:

function email($to,$subject,$body) 
{ 
    return mail('[email protected]',$subject,$body,'From: [email protected]'); 

} 

В качестве альтернативы, если вы задали ответ в своем почтовом заголовке, вы можете проверить наличие каких-либо отскоков который позволит вам с уверенностью сказать, что сообщение не было доставлено.

+0

Согласен. Поскольку функция почты всегда возвращает логическое значение, вы можете немного очистить ее, просто вернув эту строку без условного выражения. – Nilpo

+0

просто 'return mail (....);' –

+0

@Nilpo Спасибо, что указали это. Я пропустил это. Исправлено :) – Sabari

1

Вам либо необходимо установить почтовый сервер для xampp, например. Mercury. Или у вас есть enter your (external) SMTP credentials into your php.ini.

+0

Mercury уже установлен в Xammp, но понятия не имеет, как использовать его для моей проблемы. Любая помощь ??? – Prashant

+0

Как вы настроили свой Меркурий? В каком учебнике вы следовали, если вы его использовали? –

+0

его предварительно установлена ​​в последней версии xammp, и до сих пор я еще не настроил его. – Prashant

Смежные вопросы