Wenn ich versuche, E-Mails über PHPMailer zu senden, erhalte ich diese Fehlermeldung. Mein Code ist unten:
<?
require("phpmailer/class.phpmailer.php"); // First we require the PHPMailer libary in our script
$mail = new PHPMailer(); // Next we create a new object of the PHPMailer called $mail
$mail->From = "[email protected]";
$mail->FromName = "Rajasekar";
$mail->AddAddress("[email protected]"); // This is the adress to witch the email has to be send.
$mail->Subject = "First PHP Email message"; // This is the subject of the email message.
$mail->Body = "Hi! \n\n This is my first e-mail sent through PHP."; // This is the actual email message
if(!$mail->Send()) // Now we send the email and check if it was send or not.
{
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
}
else
{
echo 'Message has been sent.';
}
?>
In Ubuntu (mindestens 12.04) scheint es, dass sendmail nicht standardmäßig installiert ist. Sie müssen es mit dem Befehl Sudo apt-get install sendmail-bin
installieren.
Möglicherweise müssen Sie auch die richtigen Berechtigungen dafür konfigurieren, wie oben erwähnt.
Ich habe diese Codezeile verwendet
if($phpMailer->Send()){
echo 'Sent.<br/>';
}else{
echo 'Not sent: <pre>'.print_r(error_get_last(), true).'</pre>';
}
um herauszufinden, was das Problem war. Es stellte sich heraus, dass ich im abgesicherten Modus lief, und in Zeile 770 oder etwas anderes wurde ein fünftes Argument $params
an mail()
übergeben, das im abgesicherten Modus nicht unterstützt wird. Ich habe es einfach kommentiert und voilá, es hat funktioniert:
$rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header/*, $params*/);
Es ist innerhalb der MailSend
- Funktion von PHPMailer.
Ich hatte gerade dieses Problem und fand in meinem Apache-Fehlerprotokoll, dass sendmail nicht installiert war. Nach der Installation funktionierte alles wie geplant!
[email protected]:~$ tail /var/log/Apache2/error.log
sh: 1: /usr/sbin/sendmail: not found
Hatte dasselbe Problem. Ich habe nur eine kurze Apache2 error.log
-Datei nachgeschlagen und es wurde genau gesagt, was das Problem war:
> sh: /usr/sbin/sendmail: Permission denied
Die Lösung bestand also darin, die richtigen Berechtigungen für die /usr/sbin/sendmail
-Datei zu erteilen (es war nicht über PHP zugänglich).
Der Befehl dazu wäre:
> chmod 777 /usr/sbin/sendmail
stellen Sie sicher, dass es überhaupt existiert!
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';
Stellen Sie sicher, dass Sie auch die mit phpmailer gelieferte SMTP-Klasse einschließen:
// for mailing
require("phpmailer/class.phpmailer.php");
require("phpmailer/class.smtp.php");
Um einen alten Thread erneut aufzurufen, bestand mein Problem darin, dass eine der "AddressTo" -Adressen nicht gültig war. Durch das Entfernen dieser E-Mail-Adresse wurde der Fehler behoben.
here , "Dies bedeutet, dass Ihre PHP - Installation nicht dafür konfiguriert ist, die mail () - Funktion korrekt aufzurufen (z. B. sendmail_path ist in Ihrer php.ini nicht richtig eingestellt) oder Sie haben keine lokale Mail Server installiert und konfiguriert. "
In meinem Fall musste ich die mail () - Funktion ("Aktivieren der mail () - Warteschlange") in den Einstellungen meines Webhosts zulassen.
Versuchen Sie es mit einer Adresse, die nicht gmail ist. Sie erlauben (soweit ich weiß) keinen Zugang zum Senden von E-Mails. Ich habe letzte Woche ein einfaches E-Mail-Programm erstellt, und es werden auch keine Standardports zum Senden verwendet, und Sie müssen über https übertragen
Erkundigen Sie sich bei Ihrem Gastgeber, ob für das Senden von E-Mails stündliche Beschränkungen gelten.
Dies ist ein Systemfehler.
Überprüfen Sie den Fehler des Systems mit:
tail /var/log/httpd/error_log
Es kann einen beliebigen Grund geben.
Sie müssen lediglich den alten Thread erneut aufrufen, um PHPMailer ausführlich zu debuggen, indem Sie Folgendes hinzufügen:
print_r(error_get_last());
dies gibt den genauen Fehler für Sie aus, der dazu führt, dass die Standard-PHP-Mail () beschädigt wird.
Ich hoffe es hilft jemandem.
Ein alter Thread, aber es kann jemandem wie mir helfen. Ich habe das Problem gelöst, indem der Wert des SMTP-Servers in der PHP.ini auf einen zulässigen Wert gesetzt wurde
Ich hatte den gleichen Fehler. Das Reply-To verursachte das Problem. Ich habe es entfernt.
$email->AddReplyTo( $admin_email, $admin_name );
In CentOS kann dies durch die SELinux-Richtlinie verursacht werden. Führen Sie den folgenden Code aus, um zu sehen, ob sie aktiviert ist.
getsebool httpd_can_sendmail
Sie können es aktivieren, indem Sie den folgenden Befehl aufrufen. Der Parameter -P macht es dauerhaft.
setsebool -P httpd_can_sendmail 1
"Mail-Funktion konnte nicht instanziiert werden" ist die Methode von PHPMailer, zu melden, dass der Aufruf von mail () (in der Mail-Erweiterung) fehlgeschlagen ist. (Sie verwenden also den Mail-Mailer.)
Sie könnten versuchen, das @ vor den Aufrufen von mail () in PHPMailer :: MailSend zu entfernen und zu sehen, welche Fehler ggf. unbemerkt verworfen werden.
ich habe mein problem gelöst (für wamp)
$mail->IsSMTP();
$mail->Host='hote_smtp';
Ändern Sie hote_smtp um den richtigen Wert