2017-07-24 121 views
1

我想通过使用Gmail发送电子邮件。对于这一点,我只是用下面的命令PHP警告:include_once(Net/SMTP.php):无法打开流

运行以下命令

pear install Mail Mail_Mime 

我的PHP文件(filename.php)代码下面给出

<?php 
    require_once "Mail.php"; 
    $from = '[email protected]'; 
    $to = '[email protected]'; 
    $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' => '[email protected]', 
      '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.

+0

邮件很清楚,没有找到Net/SMTP.php文件 – Antony

+0

@Antony我可以看到'smtp.php' insdei'/ usr/share/pear/Mail /' – user3441151

+1

你的PEAR目录是否在include_path ? –

回答

0

找不到/usr/share/pear/Mail/smtp.php文件,请确保smtp.php文件存在。

您可以先检查文件是否以这种方式存在。

if(file_exists("./usr/share/pear/Mail/smtp.php") == 1){ 
    require_once "Mail.php"; 
     $from = '[email protected]'; 
     $to = '[email protected]'; 
     $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' => '[email protected]', 
       '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"; 
    } 
+0

这几乎避免了回答这个问题。他正在寻找它需要的文件,如果它不在那里,不会放弃。 – Synchro

+0

我只是想让他确定如何解决问题。如果找不到文件,他可以仔细看看文件的路径,以便他可以解决问题 – Lekens

+0

我认为他应该共享Mail.php内容。 – Lekens

4

现在它对我有用。我只是用下面的步骤来解决这个问题:

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 

之后,一切工作正常。

谢谢大家。

相关问题