Предупреждение PHP: include_once(Net/SMTP.php): не удалось открыть поток

Я хочу отправить письмо с помощью Gmail. Для этого я просто запускаю следующую команду

pear install Mail Mail_Mime

Мой код php файла (filename.php) приведен ниже

<?php
  require_once "Mail.php";
  $from = 'from@gmail.com';
  $to = 'to@gmail.com';
  $subject = 'Hi!';
  $body = "Hi,\n\nHow are you?";
  $headers = array(
      'From' => $from,
      'To' => $to,
      'Subject' => $subject
  );
  $smtp = Mail::factory('smtp', array(
          'host' => 'ssl://smtp.gmail.com',
          'port' => '465',
          'auth' => true,
          'username' => 'from@gmail.com',
          'password' => 'password'
      ));
  $mail = $smtp->send($to, $headers, $body);
  if (PEAR::isError($mail)) {
      echo('<p>' . $mail->getMessage() . '</p>');
  } else {
      echo('<p>Message successfully sent!</p>');
  }
?>

Когда я запускаю этот "filename.php" с помощью команды ниже

php filename.php

Я получил следующую ошибку

PHP Warning:  include_once(Net/SMTP.php): failed to open stream: No such file or directory in /usr/share/pear/Mail/smtp.php on line 365
PHP Warning:  include_once(): Failed opening 'Net/SMTP.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /usr/share/pear/Mail/smtp.php on line 365
PHP Fatal error:  Class 'Net_SMTP' not found in /usr/share/pear/Mail/smtp.php on line 366

Я использую CentOS 7.

2 ответа

Теперь это работает для меня. Я просто использую следующие шаги, чтобы решить эту проблему:

1. pear upgrade --force --alldeps http://pear.php.net/get/PEAR-1.10.1
2. pear clear-cache
3. pear update-channels
4. pear upgrade
5. pear upgrade-all
6. pear install Auth_SASL
7. pear install pear/Net_SMTP

После этого все работает нормально.

Спасибо всем.

Для компьютеров с Windows -

Net_SMTP - это одна из реализаций протокола SMTP. Вам нужно будет установить это расширение. Выполнив следующую команду в CMD.

pear install Net_SMTP

Убедитесь, что у вас установлена ​​и настроена груша в пути к вашей среде.

Файлы /usr/share/pear/Mail/smtp.php не найдены. Убедитесь, что файл smtp.php существует.

Вы можете сначала проверить, существует ли файл таким способом.

    if(file_exists("./usr/share/pear/Mail/smtp.php") == 1){
    require_once "Mail.php";
      $from = 'from@gmail.com';
      $to = 'to@gmail.com';
      $subject = 'Hi!';
      $body = "Hi,\n\nHow are you?";
      $headers = array(
          'From' => $from,
          'To' => $to,
          'Subject' => $subject
      );
      $smtp = Mail::factory('smtp', array(
              'host' => 'ssl://smtp.gmail.com',
              'port' => '465',
              'auth' => true,
              'username' => 'from@gmail.com',
              'password' => 'password'
          ));
      $mail = $smtp->send($to, $headers, $body);
      if (PEAR::isError($mail)) {
          echo('<p>' . $mail->getMessage() . '</p>');
      } else {
          echo('<p>Message successfully sent!</p>');
      }
    }
else{
    echo "./usr/share/pear/Mail/smtp.php file not found";
    }
Другие вопросы по тегам