2017-05-26 4 views
0

Ich versuche, Mail über PHP Pear Mail-Paket zu senden, habe ich 2 Szenarien hier, im ersten Szenario E-Mail richtig gesendet wird ohne Fehler, aber im zweiten Szenario bekomme ich Fehlermeldung.Fehler beim Senden von E-Mails mit PEAR-Mail-Paket

Szenario 1:

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

Wenn ich direkt Datei in url laufen dann Mail ohne Fehler gesendet.

Szenario 2: Dateiname: 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); 

    } 

?> 

Jetzt nenne ich diese send_mail Funktion aus verschiedenen Datei wie diese

File Name: Service/process.php

<?php 

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

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

send_mail($subject,$email_body); 

?> 

Wenn diese Datei in dem Browser ausgeführt wird, erhalte ich Fehlermeldung auf der Leitung

send_mail($subject,$email_body); 

Fehler:

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 

In Szenario 1 wird alles gut funktioniert, warum dann in Szenario 2 Ich erhalte Dieser Fehler, ich denke, es gibt ein Problem mit dem Pfad, aber ich bin mir nicht sicher, was sollte der Pfad sein und wo sollte ich das einschließen.

Ordnerstruktur:

enter image description here

Fügen Sie Code in der Datei E-Mail/smtp.php

require_once "Net/SMTP.php"; 

Anmerkung: Ich habe manuell PEAR-Paket in Cpanel Konto installiert und getan keine Einstellungen in der Datei php.ini

Antwort

0

hinzugefügt dirname (FILE) mit dem Pfadnamen überall im Code __DIR__ für den Verzeichnispfad verwenden und es funktioniert

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

Sie können für aktuelle Datei

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

ich dies bereits versucht, dass funktioniert nicht – dollar

+0

haben Sie alle Ihre require_once ändern. Und was ist die Fehlerinformation, wenn Sie zu diesem geändert haben? –

+0

Ich habe diesen Pfad in "require_once" home/asepidy/public_html/Mail/Net/SMTP.php "; ' , bekomme ich dieselbe Fehlermeldung und für mein Szenario 1 bekomme ich auch Fehlermeldung wie ** Fataler Fehler: require_once(): Fehler beim Öffnen erforderlich 'home/aspidy/public_html/Mail/Net/SMTP.php' (include_path = '.:/opt/php55/lib/php/php) in/home/saniserv/public_html/Mail/smtp.php on line 358 ** – dollar

Verwandte Themen