отправка почты с использованием php и pear на windows - PullRequest
3 голосов
/ 26 ноября 2011

Я пытаюсь отправить электронное письмо, используя скрипт php, но я получаю ошибки, это мой код. Я использую NetBeans и Windows xampp. и я включил грушу в файл php.ini, но все еще с вашими ошибками любые идеи

 require_once "Mail.php";

                            $from = "onlinebookstorb@gmail.com";
                            $to = "'$email'";
                            $subject = "Online book store information";
                            $body = "This is your Id '$userID' click <a href =../index.php > here </a> to change to go to the website "; //todo change URL to make it work when it is online

                            $host = "ssl://smtp.gmail.com";
                            $port = "993";
                            $host = "smtp.gmail.com";
                            $username = "onlinebookstoreb@gmail.com";
                            $password = "";

                            $headers = array('From' => $from,
                                'To' => $to,
                                'Subject' => $subject);
                            $smtp = Mail::factory('smtp', array('host' => $host,
                                        'port' => $port,
                                        'auth' => true,
                                        'username' => $username,
                                        'password' => $password));

                            $mail = $smtp->send($to, $headers, $body);
                            if (PEAR::isError($mail)) {
                                echo("<p>" . $mail->getMessage() . "</p>");
                            } else {
                                echo("<p>Message successfully sent!</p>");
                            }

и вот ошибки, которые я получаю:

Строгие стандарты: Нестатический метод Mail :: factory () не должен вызываться статически в C: \ xampp \ htdocs \ OnlineBookStore \ Store \ Register.php в строке 85

Строгие стандарты: Нестатический метод PEAR :: isError () не следует вызывать статически, предполагая $ this из несовместимого контекста в C: \ xampp \ php \ PEAR \ Mail \ smtp.php в строке 365

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

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

Ответы [ 2 ]

14 голосов
/ 05 января 2012

Я просто столкнулся с той же проблемой и решил ее, используя:

@require_once "Mail.php";
...
$smtp = @Mail::factory('smtp', array('host' => $host,
                                        'port' => $port,
                                        'auth' => true,
                                        'username' => $username,
                                        'password' => $password));
$mail = @$smtp->send($to, $headers, $body);
if (@PEAR::isError($mail)) {

Обратите внимание, что я добавил @ ко всем вызовам "груша / почта".

Я предпочитаю это решение, чтобы изменить общие настройки сообщений об ошибках, поскольку я не хочу видеть предупреждения «груша / почта», но хочу видеть те из них, которые относятся к моему собственному коду.

0 голосов
/ 04 октября 2013

Да, метод jeroens не показывает предупреждающие сообщения, но действительно ли он решает проблему?apprehending @ просто скрывает предупреждение, связанное с ним.

Чтобы устранить проблему в Mail.php, измените следующее

function &factory($driver, $params = array())

Измените его на

static function &factory($driver, $params = array())

Причинаэта ошибка вызвана тем, что PEAR Mail не был обновлен до стандартов PHP5 и все еще использует PHP4, поэтому постепенно, по мере того как серверы становятся совместимыми с PHP5, это будет происходить чаще.Лучше исправить, чем скрыть.

Надеюсь, это поможет

...