PHPMailer v6.5.0 - Error 500 beim Absenden

Fragen und Diskussionen rund um Internet, Software und PC
Gersh
Mitglied (Level 2)
Mitglied (Level 2)
Beiträge: 14
Registriert: Fr 21. Okt 2022, 10:01

PHPMailer v6.5.0 - Error 500 beim Absenden

Ungelesener Beitrag von Gersh »

Hallo Community,

ich habe für meine Webseiten und zwei Kunden den PHPMailer verbaut. Ich hatte zuvor Formulare von Werner Zenks Generator, nur diese funktionierten nicht mehr mit PHP 8.x

Für diese neue PHPMailer-Version habe ich ein "sendmail.php" Script sowie ein "mailscript.php" (das mit SMTP-Login arbeitet). Beide Scripte funktionieren auch über meine IONOS und Hetzner Tarife.

Bei der Kundenwebsite, um die es hier geht, bekomme ich aber beim Absenden (sendmail.php) einen Error 500. Ich habe schon den Hoster kontaktiert. Ist aber so ein amerikanischer Billighoster (one.com), mit einem sehr unmotivierten Support. Man hat mir jetzt gnädiger Weise die PHP-Fehlermeldungen aktiviert:

Fatal error: Uncaught Error: Call to undefined function PHPMailer\PHPMailer\popen() in /customers/4/f/7/xxxx.de/httpd.www/PHPMailer-master/src/PHPMailer.php:1749 Stack trace: #0 /customers/4/f/7/xxxx.de/httpd.www/PHPMailer-master/src/PHPMailer.php(1641): PHPMailer\PHPMailer\PHPMailer->sendmailSend('Date: Fri, 17 F...', 'Kontaktformular...') #1 /customers/4/f/7/xxxx.de/httpd.www/PHPMailer-master/src/PHPMailer.php(1481): PHPMailer\PHPMailer\PHPMailer->postSend() #2 /customers/4/f/7/xxxx.de/httpd.www/sendmail.php(79): PHPMailer\PHPMailer\PHPMailer->send() #3 {main} thrown in /customers/4/f/7/xxxx.de/httpd.www/PHPMailer-master/src/PHPMailer.php on line 1749

Wenn jemand nun fragen möchte, wieso man bei so einem Hoster hostet oder wieso kein mailscript.php verwendet wird:
Ich habe den Kunden über eine Agentur, Kunde und Agentur sind völlig chaotisch und haben null technisches Verständnis. Ich warte schon 2 Wochen auf die Logins von dem Hoster, aber der Kunde weiß nicht wo die sind. Wahrscheinlich weiß diesen nicht einmal, wo er hostet. Seine MX-Records verweisen auf Microsoft, da Exchange genutzt wird. Gibt also kein SMTP mehr über diese Domain und wenn über Exchange, müsste man die Lizenzen erweitern (hat mir der aktuelle EDV-"Betreuer" gesagt. Der hat mit one.com aber auch nichts am Hut). Also wäre sendmail das Einfachste - wenn es denn funktionieren würde, wie bei IONOS und Hetzner (das sind meine Hoster).

Ich kann hier noch das sendmail.php posten:

Code: Alles auswählen

<?php
/*
 * sendmail.php versenden mit Spamschutz gegen Bots
 * Version vom 16.10.2021
 * 
 * Erfolgreich getestet mit: PHPMailer Version: 6.5.0
 */

// PHP Fehlermeldungen (1 um das Formular zu testen) anzeigen.
error_reporting(1); // (1)

// PHPMailer einbinden
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require "PHPMailer-master/src/Exception.php";
require "PHPMailer-master/src/PHPMailer.php";
require "PHPMailer-master/src/SMTP.php";

// Danke und Fehlerseite
$dankeSeite = "index.php"; // Danke - Seite, die Mail wurde erfolgreich versandt.
$fehlerSeite = "index.php"; // Fehler - Seite, falls die Mail nicht versandt werden konnte.

// Betreff
// Jede E-Mail benötigt einen Betreff, da jedoch im Formular kein
// entsprechendes Feld gesetzt wurde, wird ein fester Betreff hinzugefügt.
$betreffEmail = "Kontaktformular xxxx.de";


// Wurden POST-Daten gesendet?
if ($_SERVER["REQUEST_METHOD"] == "POST") {

 if (isset($_POST["field"])) {

   // Zeitzone und das aktuelle Datum setzen
   date_default_timezone_set("Europe/Berlin");
   $datum = date("d.m.Y H:i");

   // HTML-Tags entfernen
   $_POST = array_map('strip_tags', $_POST);

   // Inhalt der E-Mail setzen
        $inhaltEmail = "Kontaktformular xxxx.de, 
gesendet am: $datum Uhr


        Nachfolgende Daten wurden angegeben:

        Name, Vorname:  " . $_POST["name_vorname"] . " 
        Ihr geplantes Projekt:  " . $_POST["ihr_geplantes_projekt"] . " 
        Unternehmen:  " . $_POST["unternehmen"] . " 
        Straße, Hausnummer:  " . $_POST["strasse_hausnummer"] . "
        PLZ, Ort:  " . $_POST["plz_ort"] . " 
        Telefonnummer:  " . $_POST["telefon"] . " 
        Telefaxnummer:  " . $_POST["telefax"] . " 
        E-Mail:  " . $_POST["email"] . " 
        Ihre Nachricht:  " . $_POST["nachricht"] . " 

        Datenschutzhinweise akzeptiert:  " . $_POST["datenschutz"] . " 
   ";

   // Instanz und Zeichenkodierung setzen
   $mail = new PHPMailer();
   $mail->CharSet = "UTF-8";

   // Servereinstellungen
   $mail->isSendmail();

  // Absender und Empfänger
  $mail->setFrom("info@xxxx.de"); // Absender
  $mail->addAddress("info@xxxx.de"); // Empfänger

   // Betreff und Body setzen
   $mail->Subject = $betreffEmail;
   $mail->Body = $inhaltEmail;

  // E-Mail versenden
  if ($mail->Send()) {
   header("Location: " . $dankeSeite);
  }
  else {
   header("Location: " . $fehlerSeite);
  }
 }
}
?>
Kann mir jemand bitte einen Tipp geben?

Danke im Voraus und viele Grüße
Gersh
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: PHPMailer v6.5.0 - Error 500 beim Absenden

Ungelesener Beitrag von Werner-Zenk.de »

Hallo Gersh,
Ist aber so ein amerikanischer Billighoster (one.com), mit einem sehr unmotivierten Support
Ich war auch einmal dort und habe direkt, am gleichen Tag wieder gekündigt.

Hier ist ein aktuelles phpMailer-Script meiner Website, vielleicht kannst du dieses verwenden: E-Mails mit dem phpMailer und SMTP versenden
Gersh
Mitglied (Level 2)
Mitglied (Level 2)
Beiträge: 14
Registriert: Fr 21. Okt 2022, 10:01

Re: PHPMailer v6.5.0 - Error 500 beim Absenden

Ungelesener Beitrag von Gersh »

Hallo Werner (darf doch Werner sagen?),

vielen Dank für die fixe Antwort und den Link.
Werde ich abspeichern und ... die Tage ... testen.
Hoffe es klappt!

Viele Grüße
Gersh
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: PHPMailer v6.5.0 - Error 500 beim Absenden

Ungelesener Beitrag von Werner-Zenk.de »

Wenn ich in deinem Script: $mail->isSendmail(); heraus mache dann funktioniert es auch.
Gersh
Mitglied (Level 2)
Mitglied (Level 2)
Beiträge: 14
Registriert: Fr 21. Okt 2022, 10:01

Re: PHPMailer v6.5.0 - Error 500 beim Absenden

Ungelesener Beitrag von Gersh »

Nachtrag:

Wollte nicht warten.
Funktioniert leider auch nicht.
Wegen sendmail habe ich die Zeile 31-39 ausdokumentiert.

Bekomme nun eine weiße ERROR500 - Seite.
Gersh
Mitglied (Level 2)
Mitglied (Level 2)
Beiträge: 14
Registriert: Fr 21. Okt 2022, 10:01

Re: PHPMailer v6.5.0 - Error 500 beim Absenden

Ungelesener Beitrag von Gersh »

Werner-Zenk.de hat geschrieben: Fr 17. Feb 2023, 11:19 Wenn ich in deinem Script: $mail->isSendmail(); heraus mache dann funktioniert es auch.
Danke.
Dann schaltet das Script zwar auf die Danke-Seite, aber es geht keine Mail raus, bzw. kommt keine an.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: PHPMailer v6.5.0 - Error 500 beim Absenden

Ungelesener Beitrag von Tommy Herrmann »

Gersh hat geschrieben: Fr 17. Feb 2023, 10:36 ich habe für meine Webseiten und zwei Kunden den PHPMailer verbaut. Ich hatte zuvor Formulare von Werner Zenks Generator, nur diese funktionierten nicht mehr mit PHP 8.x
Hallo Gersh,

ich möchte mich hier nicht einmischen, denn Werner kann das natürlich viel besser klären als ich.

Mich interessiert gerade nur, warum Du die Formulare von Werners "Formular Generator" mit PHP 8 nicht mehr verwenden kannst :confused:

Ich habe hier 6 Jahre alte Skripte von diesem Generator und auch PHP 8 am Server und die funktionieren bestens.

https://www.mobirise-tutorials.com/Formular/
Gersh
Mitglied (Level 2)
Mitglied (Level 2)
Beiträge: 14
Registriert: Fr 21. Okt 2022, 10:01

Re: PHPMailer v6.5.0 - Error 500 beim Absenden

Ungelesener Beitrag von Gersh »

Hallo Tommy,

ich bin kein reiner Programmierer.
Ich kann nur sagen, dass alle Scripte bis PHP 7.4 tadellos funktioniert haben.
Seit ca. Ende 2022, als die diversen Hoster auf PHP 8.x umgestellt hatten, funktionierten alle Scripte nicht mehr.
Bei IONOS und Hetzner ebenso. Aktiviere/buche ich bei IONOS den "Extented Support" für PHP 7.4 oder stelle ich Hetzner zurück, funktioniert es wieder. Aber das ist ja nicht Sinn der Sache.

Also unter "funktionieren" muss ich erklären, dass die Webseiten ab der ersten PHP-Zeile "<?php" vom Formular abgeschnitten waren.
Der Code zum Senden (inkl. SMTP-Login, Formularfeld-Prüfung, Pflichtfeldprüfung etc.) war quasi in der Webseite drinnen. Also nicht separat in einer sendmail.php oder mailscript.php Datei.
Ich denke, dass die Snytax von (einer oder mehreren) Codezeile nicht PHP 8.0 entsprechen.
Der Code (den ich immer wieder verwendet habe) war vom Generator, ca. 2017.

Nun. Kann sein, dass ich den Formularmailer-Code in der HTML-Seite hätte anpassen können. Inzwischen habe ich schon Tage damit verbracht zu recherchieren (Werners Seite war geschlossen gewesen und so bin ich hier und bei github gelandet), habe alles unter PHP 8.0 hinbekommen und bei anständigen Hostern funktioniert ja auch alles.
Möchte jetzt ungern den Code der vorherigen Mailer "untersuchen" - also einen Schritt zurück machen.

Dass mir jetzt one.com ungewollt an den Fingern klebt, ärgert mich kollosal. Auch weil ich jetzt zwischen den Stühlen zwischen Agentur und Endkunde sitze. Beide verstehen rein gar nichts. Eigentlich sollte denen "die Lizenz" zum Nutzen des Internet entzogen werden. Und wenn ein Unternehmer einen Hoster für 99 Cent im Monat nutzt ... da fehlen mir die Worte - auch noch aus den USA.
Ich werde die Sache eskalieren lassen müssen, hatte nur die Hoffnung, dass ich doch noch eine (schnelle) Lösung oder einen Tipp bekomme, um die "Sch..." vom Tisch zu bekommen.

Danke Euch allen für die bisherige Unterstützung.
Vielleicht kommt noch ein Tipp ...
Hoffnung stirbt zuletzt
Gersh
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: PHPMailer v6.5.0 - Error 500 beim Absenden

Ungelesener Beitrag von Tommy Herrmann »

ja - genau deswegen hatte ich nochmals gefragt.

Ich bin doch auch bei "1&1 IONOS" (Werner auch) und meine Skripte sind alle direkt in Mobirise eingebaut und stammen aus dem Jahr 2017 von Werners Formular Generator. Das ist das, was mich so wundert. Ich verwende PHP 8.0.28

https://www.mobirise-tutorials.com/PHP/

Den direkten Einbau in Mobirise beschreibe ich doch auch dort:

https://www.mobirise-tutorials.com/Form ... mular.html

Mich wundert eben, dass wir beim gleichen Provider sind und da kann es doch fast nicht möglich sein, dass das beim einen funktioniert und beim anderen nicht.

Ich verwende diese Skripte von Werner auch viel lieber als den PHPMailer, weil ich seine Skripte verstehe - den PHPMailer aber nicht wirklich.

... mal abwarten - ich denke mal, dass Werner da noch Ideen zu haben könnte.
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: PHPMailer v6.5.0 - Error 500 beim Absenden

Ungelesener Beitrag von Werner-Zenk.de »

Lass mal gut sein mit one.com und dem phpMailer, die haben da ein ganz anderes Problem mit ihrem Webserver!

Man kann zwar Dateien per FileZilla hochladen, diese werden auch angezeigt, wenn man jedoch Änderungen an den Dateien vornimmt, werden diese auf dem Webserver nicht aktualisiert. Angeblich muss da der Webserver-Cache gelöscht werden. Meiner Meinung nach machen Sie das nur einmal am Tag, um Traffic-Kosten zu sparen!

Lege mal eine neue Datei an (mit einem anderen Dateinamen) und teste es damit bei one.com

Vom PHPMailer gibt es eine aktuelle Version (v.6.7.1).
PHP 8.x ist im Gegensatz zu PHP 7.4 strenger geworden, wenn da Variablen vom falschen Typ sind (integer/string/bool) wird da gleich eine Fehlermeldung angezeigt.
Klaus
Supporter
Supporter
Beiträge: 439
Registriert: Mi 21. Jul 2021, 00:43

Re: PHPMailer v6.5.0 - Error 500 beim Absenden

Ungelesener Beitrag von Klaus »

Ich hatte hier ja mal ein MiniTestSkript erstellt mit dem man sofort sehen kann ob es mit dem mail von PHP bei dem Hoster klappt.

viewtopic.php?p=3963#p3963

Die E-Mail-Adressen sollten ALLE von dem Hoster und der Domain sein von der das Skript aufgerufen wird.
(Ab und an muss man beim Hoster auch für das Versenden von PHP den User irgendwo im Menü dafür "freischalten".)
Wenn die MXen natürlich wo anders hin zeigen ist es gut möglich dass dann von dem Server nichts mehr versendet werden kann.
->Vermutlich muss dann zwingend SMTP verwendet werden.

... und es ist dann wirklich nirgens ein ein E-Mail-Account vorhanden denn man dann wie mit Outlook (per SMTP) zum raussenden verwenden kann?

Hab gerade gesehen dass im alten Beitrag vermutlich ein "f" verloren gegangen ist:

Code: Alles auswählen

<?php
  echo "--- Vor mail ---";
  echo mail('empfaenger@domain.de','Mail Betreff','Mail Inhalt','From: empfaenger@domain.de','-fempfaenger@domain.de');
  echo "--- Nach mail---";
?>
Info auch hier:
https://forum.df.eu/forum/user-f%C3%BCr ... 0#post4550
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: PHPMailer v6.5.0 - Error 500 beim Absenden

Ungelesener Beitrag von Werner-Zenk.de »

Bei der Fehlermeldung:
Fatal error: Uncaught Error: Call to undefined function PHPMailer\PHPMailer\popen() ... PHPMailer.php(1749)
Geht es um diese Anweisung: $mail = @popen($sendmail, 'w'); (in Version 6.7.1 ist das Zeile: 1761)

Anscheinend ist der Webserver nicht für Sendmail, Postfix oder Exim konfiguriert.
Und $mail->isSendmail(); erzeugt eine Fehlermeldung.
Oder es fehlt der -f Parameter in der Absender E-Mail-Adresse, so wie Klaus es gezeigt hat: -fempfaenger @domain.de
Klaus
Supporter
Supporter
Beiträge: 439
Registriert: Mi 21. Jul 2021, 00:43

Re: PHPMailer v6.5.0 - Error 500 beim Absenden

Ungelesener Beitrag von Klaus »

Hab ich gerade noch gefunden, vermutung sendmail geht bei one nicht, daher mail oder SMTP verwenden und zusätzlich:
"Beachten Sie, dass die "An" oder "Von" Adresse ein aktives E-Mail-Konto auf Ihrer one.com-Domain sein muss."

https://help.one.com/hc/de/articles/115 ... ls-senden-

(https://github.com/PHPMailer/PHPMailer/ ... /mail.phps)
Gersh
Mitglied (Level 2)
Mitglied (Level 2)
Beiträge: 14
Registriert: Fr 21. Okt 2022, 10:01

Re: PHPMailer v6.5.0 - Error 500 beim Absenden

Ungelesener Beitrag von Gersh »

Zunächst vielen Dank für Eure Hilfe!
Ich komme erst jetzt wieder dazu.

1. >Vom PHPMailer gibt es eine aktuelle Version (v.6.7.1).
Habe ich getestet. Kommen immer noch die Fehlermeldungen.

2. Die Umbenennungen der Dateien (wegen dem Servercache) auch ausprobiert: Nix.

3. Die FAQ von One.com gelesen. Sendmail und die zwingende Angabe einer Mailadresse von der Hostingdomain bringt auch nichts. Wenn die IP des MX-Records wegen Exchange/Microsoft geändert worden ist (so kenne ich es von Hetzner), ist der Mailserver der Domain deaktiviert. Ergo wird vermutlich auch die Angabe einer zugehörigen E-Mail-Domain nichts bringen. Wenn bei One.com auch kein Postfach mehr aktiv ist, bringt auch der Versand via SMTP nichts. Denke ich einmal.

Ich habe auch einen eigenen SMTP (von ionos und Hetzner) eingetragen. Nach dem Absenden läuft die Sanduhr (Kreis in der Browserleiste) ca. 5 Minuten, dann wird die Formularseite (nicht die danke.html) neu geladen und es geht keine Mail ein. Vermutlich wird eine "Fremddomain" bei SMTP auch unterbunden.

4. >Und $mail->isSendmail(); erzeugt eine Fehlermeldung.
>Oder es fehlt der -f Parameter in der Absender E-Mail-Adresse, so wie Klaus es gezeigt hat: -fempfaenger @domain.de
>PHPMailer\PHPMailer\popen() ... PHPMailer.php(1749)
Die ensprechende Zeile habe ich in der PHPmailer.php zwar gefunden (@popen($sendmail), aber nicht diese "-f" 's.

5. viewtopic.php?p=3963#p3963
Die Seite gibt es wohl nicht mehr.

Ja, ich habe jetzt one.com nochmals angeschrieben, ob meine Vermutungen wegen dem MX-Record stimmen (kein Postfach mehr mgl., kein sendmail etc.) und ob man für mich einen Tipp oder ein Script hat.
Die letzte Satz der letzten Antwort sagt ja schon etwas aus:
"Leider liegt diese Fehlerbehebung außerhalb unseres technischen Supports. Ich bedauere die Unannehmlichkeiten."
Was will man eben von Billighostern erwarten.

Letzte Alternative dürfte sein, das Kundenhosting zu übernehmen. Ob man so einen Kunden jedoch haben möchte?

Danke & Grüße
Gersh
Mitglied (Level 2)
Mitglied (Level 2)
Beiträge: 14
Registriert: Fr 21. Okt 2022, 10:01

Re: PHPMailer v6.5.0 - Error 500 beim Absenden

Ungelesener Beitrag von Gersh »

Das Formular funktioniert nun mit sendmail und Absender- / Empfänger E-Mail Adresse der Domain des Kunden.
Wieso plötzlich ... keine Ahnung!

Herzlichen Dank Euch allen für Eure Unterstützung!!!
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 15 Gäste