2017-05-26 4 views
0

Je suis en train d'envoyer Mail via le paquet PHP Pear Mail, j'ai 2 scénarios ici, Dans le premier scénario envoie correctement sans erreur, mais dans le second scénario, je reçois un message d'erreur.Erreur lors de l'envoi de courrier utilisant PEAR Mail package

Scénario 1:

Nom du fichier: testmail.php

<?php 
require_once "Mail.php"; 

$from = "[email protected]"; 
$to = "[email protected]"; 
$subject = "Landing Page Enquiry From -"; 
$body = "Hello just testing"; 

$host = "ssl://mail.askspidy.com"; 
$port = "465"; 
$username = "[email protected]"; 
$password = "[email protected]"; 

$headers = array ('From' => $from, 
    'To' => $to, 
    'Subject' => $subject, 
    'MIME-Version' => 1, 
    'Content-type' => 'text/html;charset=iso-8859-1' 
    ); 

$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>"); 
    } 
?> 

Si je lance le fichier dans l'URL directement mail, puis est envoyé sans aucune erreur.

Scénario 2: Nom du fichier: sendmail.php

<?php 


    function send_mail($subject,$body) 
    { 
     require_once "Mail.php"; 

     $from = "[email protected]"; 
     $to = "[email protected]"; 

     $host = "ssl://mail.askspidy.com"; 
     $port = "465"; 
     $username = "[email protected]"; 
     $password = "[email protected]"; 

     $headers = array ('From' => $from, 
      'To' => $to, 
      'Subject' => $subject, 
      'MIME-Version' => 1, 
      'Content-type' => 'text/html;charset=iso-8859-1' 
      ); 

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


     $mail = $smtp->send($to, $headers, $body); 

    } 

?> 

Maintenant, je fais appel cette fonction send_mail de différents fichiers comme celui-ci

Nom du fichier: Service/process.php

<?php 

require_once("../sendmail.php"); 

$subject="Landing page enquiry"; 
$email_body="Hello Just Testing! "; 

send_mail($subject,$email_body); 

?> 

Lorsque ce fichier est exécuté dans le navigateur, je reçois un message d'erreur sur la ligne

send_mail($subject,$email_body); 

Erreur:

Warning: include_once(Net/SMTP.php): failed to open stream: No such file or directory in /usr/local/lib/php/Mail/smtp.php on line 348 

Warning: include_once(): Failed opening 'Net/SMTP.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /usr/local/lib/php/Mail/smtp.php on line 348 

Fatal error: Class 'Net_SMTP' not found in /usr/local/lib/php/Mail/smtp.php on line 349 

Dans tout scénario 1 fonctionne très bien alors pourquoi dans le scénario 2 Je reçois cette erreur, je suppose qu'il ya un problème avec le chemin mais je ne suis pas sûr de ce que devrait être le chemin et où devrais-je inclure cela.

Structure des dossiers:

enter image description here

Inclure le code dans le fichier courrier/smtp.php

require_once "Net/SMTP.php"; 

Note: J'ai installé manuellement paquet PEAR compte Cpanel et done pas de paramètres dans le fichier php.ini

Répondre

0

Ajouté dirname (FICHIER) au nom du chemin partout dans le code et cela a fonctionné

require_once dirname(__FILE__)."/Net/SMTP.php"; 
0

Vous pouvez utiliser __DIR__ pour le chemin du répertoire pour le fichier en cours

require_once __DIR__ . "/Net/SMTP.php"; 
+0

Je l'ai déjà essayé, que ne fonctionne pas – dollar

+0

avez-vous changer tout votre require_once. Et quelle est l'info d'erreur quand vous avez changé à ceci? –

+0

J'ai utilisé ce chemin dans 'require_once "home/askspidy/public_html/Mail/Net/SMTP.php";' , j'obtiens le même message d'erreur et pour mon scénario 1 j'obtiens également le message d'erreur comme ** Erreur fatale: require_once(): Échec d'ouverture requis 'home/askspidy/public_html/Mail/Net/SMTP.php' (include_path = ':/opt/php55/lib/php/php ') dans/home/saniserv/public_html/Mail/smtp.php on line 358 ** – dollar