PHP mail() funktioniert nur noch sehr sporadisch

  • Hallo ich bin neu hier :thumbup:

    ich war vorher fast 10 Jahre lang bei einem anderen Webhoster. Es war der private VPS eines Freundes. Es lief noch PHP 5.6 und generell war alles obsolet.

    Ich habe meine Projekte gestern auf die netcup-Server umgezogen. Es war ein wenig Arbeit aber es läuft nun fast alles. Außer PHP mail().


    Diesen Code habe ich lange verwendet und hat mir immer zuverlässig Mails an alle Adressen geschickt - sogar an Hotmail / live / Outlook, obwohl die sehr speziell sind was sowas angeht. Er ist stark gekürzt aber so hat er vorher auch funktioniert. Mittlerweile funktioniert das aber nicht mehr. Die Funktion mail() gibt True zurück, aber gesendet wird nichts. Auch bei http://www.mail-tester.com kommt nichts an. Wasist hier falsch? Im CCP habe ich PHP 7.4 eingestellt. Alles andere ist Standard. Die Namen und E-Mail-Adresse habe ich hier im Forum natürlich durch Quatsch ersetzt.


    Weiß jemand guten Rat? Ich würde nur ungerne auf externe SMTP-Server umsteigen. Und selbst wenn, welcher Service ist am besten?

    Es handelt sich um zwei Projekte.


  • Moin,


    ich als nicht PHP Spezie, würde zwei Probleme vermuten in :


    Code
    1. return mail($to, $$subject, $msg, $header);


    1.

    $$subject

    Du meinst sicherlich $subject


    2.

    In PHP 7.x

    wird folgendes erwartet im Header noch erwartete, was bei dir (augenscheinlich) fehlt :

    Quote


    Unter anderem ist darauf zu achten, dass mehrere aufeinanderfolgende Zeilenumbrüche den E-Mail-Header beenden.



    Ansonsten > https://www.php.net/manual/de/function.mail.php


    Oder einfach warten bis sich jemand mit mehr Ahnung meldet .)

  • Der direkte mail()-Aufruf wird schon lange nicht mehr empfohlen, stattdessen empfiehlt es sich hier auf Mail-Klassen zurückzugreifen, um Mails bequem und sicher per SMTP zu versenden. Sehr verbreitet ist z.B. der PHPMailer.


    Ich würde nur ungerne auf externe SMTP-Server umsteigen. Und selbst wenn, welcher Service ist am besten?

    Wozu externe SMTP-Server verwenden? Ich gehe mal stark davon aus, dass du bei Netcup ein Webhosting-Tarif gebucht hast - somit steht dir im Paket natürlich auch der Mailserver zur Verfügung. Dort einfach ein Mailkonto anlegen und im PHPMailer hinterlegen und dann läuft das auch problemlos. :)

  • Das sind Tippfehler hier im Forum sorry. Das Script sieht natürlich nicht ganz so aus. Ich habe feste Zeichenketten entfernt.


    Könntest du mir das mit dem PHPMailer vielleicht erklären? Welche Daten brauche ich und wo bekomme ich die hier? netcup ist noch sehr überfordernd für mich. Ich habe das gerade auf den Webserver gepackt aber ich scheitere schon an einer Datei die ich nicht habe: vendor/autoloader.php.


  • Ich habe glaube ich noch ein viel größeres Problem. Ich bin kein PHP-Profi und kenne keine Klassen, Namespaces und gar nix.


    Ich habe im Root-Verzeichnis eine Datei mit einer Funktion drin, die den PHPMailer bedient.

    Rufe ich die Datei direkt auf funktioniert alles. Aber ich muss die Datei über eine andere Datei aufrufen. In dieser anderen Datei verweise ich auf die Funktion in der Datei im Wurzelverzeichnis.

    Der Mailer ist in \PHPMailer

    Der Aufrufer ist in \data\mail\mail.php


    Das m it dem Namespace funktioniert dann nicht mehr und das ergibt glaube ich einen 500er Fehler. Kann man das nicht wie früher ohne Namespaces machen?