Предупреждение 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";
}