wake-up-neo.net

phpmailer Fehler "Mail-Funktion konnte nicht instanziiert werden"

Ich verwende das mail()-grundlegende Beispiel, das für meine Benutzer-ID leicht geändert wurde, und ich erhalte den Fehler "Mailer-Fehler: Mail-Funktion konnte nicht instanziiert werden".

wenn ich die Mail-Funktion verwende - 

mail($to, $subject, $message, $headers);

es funktioniert gut, obwohl ich Probleme beim Senden von HTML habe, weshalb ich PHPMailer probiere.

dies ist der Code:

<?php
require_once('../class.phpmailer.php');

    $mail             = new PHPMailer(); // defaults to using php "mail()"
    $body             = file_get_contents('contents.html');
    $body             = eregi_replace("[\]",'',$body);
        print ($body ); // to verify that I got the html
    $mail->AddReplyTo("[email protected]","my name");
    $mail->SetFrom('[email protected]', 'my name');
    $address = "[email protected]";
    $mail->AddAddress($address, "her name");
    $mail->Subject    = "PHPMailer Test Subject via mail(), basic";
    $mail->AltBody    = "To view the message, please use an HTML compatible email viewer!";
    $mail->MsgHTML($body);
    $mail->AddAttachment("images/phpmailer.gif");      // attachment
    $mail->AddAttachment("images/phpmailer_mini.gif"); // attachment

    if(!$mail->Send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
        echo "Message sent!";
    }
?>
32
sdfor

Verwenden SieSMTP, um eine E-Mail zu senden: -

$mail->IsSMTP();
$mail->Host = "smtp.example.com";

// optional
// used only when SMTP requires authentication  
$mail->SMTPAuth = true;
$mail->Username = 'smtp_username';
$mail->Password = 'smtp_password';
26
$mail->AddAddress($address, "her name");

sollte in geändert werden 

$mail->AddAddress($address);

Das hat für meinen Fall funktioniert ..

11
Avinash

Das hat bei mir funktioniert

$mail->SetFrom("[email protected]","my name", 0); //notice the third parameter
11
Matías Cánepa

Sie müssen sicherstellen, dass Ihre Absenderadresse ein gültiges E-Mail-Konto auf diesem Server ist.

10
Dan Fare

Wenn Sie Dateianhänge senden und Ihr Code für kleine Anhänge funktioniert, bei großen Anhängen jedoch fehlschlägt:

Wenn Sie die Fehlermeldung erhalten, dass die E-Mail-Funktion nicht instanziiert werden konnte, wenn Sie versuchen, große E-Mails zu senden, und Ihr Fehlerprotokoll PHP die Meldung "Nachricht kann nicht gesendet: zu groß" enthält, dann wird Ihr E-Mail-Übertragungsagent (sendmail, postfix, exim usw.) weigert sich, diese E-Mails zuzustellen.

Die Lösung besteht darin, den MTA so zu konfigurieren, dass größere Anhänge möglich sind. Dies ist jedoch nicht immer möglich. Die alternative Lösung ist die Verwendung von SMTP . Sie benötigen Zugriff auf einen SMTP-Server (und Anmeldeinformationen, wenn Ihr SMTP-Server eine Authentifizierung erfordert):

$mail             = new PHPMailer();
$mail->IsSMTP();                           // telling the class to use SMTP
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Host       = "mail.yourdomain.com"; // set the SMTP server
$mail->Port       = 26;                    // set the SMTP port
$mail->Username   = "[email protected]"; // SMTP account username
$mail->Password   = "yourpassword";        // SMTP account password

PHPMailer verwendet standardmäßig die Funktion PHP mail(), die Einstellungen von php.ini verwendet, die normalerweise sendmail (oder etwas ähnliches) verwendet. Im obigen Beispiel überschreiben wir das Standardverhalten.

8
Salman A

Ihr Code sieht gut aus, haben Sie vergessen, PostFix auf Ihrem Server zu installieren?

Sudo apt-get install postfix

Es hat für mich funktioniert;)

Prost

5
Erenss

Die Hilfe von PHPMailer zu diesem spezifischen Fehler hat mich auf den richtigen Weg gebracht.

Was wir gefunden haben ist, dass php.ini nicht den sendmail_path definiert hat, also fügte ich hinzu, dass sendmail_path = /usr/sbin/sendmail -t -i;

2
Matt Pope

Anscheinend war es nur eine SERVER-Ablehnung. Bitte überprüfen Sie die Zugänglichkeit Ihrer Mailserver-Protokoll-/SMTP-Verbindung.

1
Alex

Ich hatte dieses Problem und nach einigem Debuggen und Durchsuchen wurde mir klar, dass der SERVER (Paddy) Probleme haben kann.

Ich empfehle Ihnen, sich mit Ihrem Webhosting-Provider in Verbindung zu setzen und mit ihnen überQuota Restrictionsüber die E-Mail-Funktion zu sprechen.

Sie können in der Lage sein, Sie über ihre Grenzen zu informieren und wenn Sie diese überschreiten. Sie können das Limit möglicherweise auch aktualisieren, indem Sie zu einem privaten Server wechseln.

Nach einem 15-minütigen Gespräch mit GoDaddy konnte der technische Support dies innerhalb von 20 Minuten beheben.

Das hat mir sehr geholfen, und ich wollte es teilen. Wenn also jemand anderes darauf stößt, können sie diese Methode ausprobieren, wenn alle versagen oder bevor sie etwas anderes versuchen.

1
Kray

In meinem Fall war es die Begrenzung der Anhangsgröße, die das Problem verursacht. Überprüfen und erhöhen Sie die Größenbeschränkung der für mich funktionierenden Post.

1
fiskcn

Ich hatte dieses Problem und musste in cPanel gehen, wo ich die Fehlermeldung sah 

"Achtung! Bitte registrieren Sie Ihre E-Mail-IDs, die in Nicht-SMTP-E-Mails über das Cpanel-Plugin verwendet werden. Nicht registrierte E-Mail-IDs sind nicht in SMTP-E-Mails enthalten, die über Skripts gesendet werden. "

Das Registrieren der E-Mails in cPanel (Register Mail IDs) und das Warten auf 10 Minuten brachte meine zur Arbeit.

Hoffe das hilft jemandem.

0
Thomas Byy

Prüfen Sie, ob sendmail aktiviert ist, meistens, wenn Ihr Server von einem anderen Unternehmen bereitgestellt wird.

0

Ich hatte auch dieses Problem. Meine Lösung bestand darin, Selinux zu deaktivieren. Ich habe versucht, 2 verschiedene http-Einstellungen in selinux zuzulassen (etwas wie httpd_allow_email und http_can_connect) und das hat nicht funktioniert, also habe ich es komplett deaktiviert und es fing an zu arbeiten.

0
iAndy

Ein alter Thread, aber es kann jemandem wie mir helfen. Ich habe das Problem behoben, indem der SMTP-Serverwert in PHP.ini auf einen zulässigen Wert eingestellt wurde

0
Atif.Net

Ich hatte dieses Problem beim Senden von Dateien mit regionalen Zeichen in ihren Namen wie: VęryRęgióńął file - name.pdf.

Die Lösung bestand darin, den Dateinamen vor dem Anhängen an die E-Mail zu löschen.

0
jmarceli