Mail-Funktion

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mail-Funktion

    Hallo Leute.
    Seit Wochen versuche ich das Problem bei einem Kontaktformular zu finden.
    Das hab ich mal für PHP5 geschrieben und da hat es problemlos funktioniert.
    Jetzt ist der Server auf PHP7.2 umgestellt und nun kommen keine Mails mehr an.

    Heute hab ich den ganzen Code aufs Minimum reduziert und das Problem gefunden, kann es mir nur nicht erklären. Das Problem scheint am from-Teil zu liegen, den ich jetzt auch schon in die Funktion direkt geschrieben habe, um einen Fehler im Array auszuschließen. Aber so kommt keine Mail an...

    Hier mein Code:
    PHP-Code:
    <?php
    $empfaenger 
    "meinemail@web.de";
    $betreff "Die Mail-Funktion";
    $text "Hier steht mein E-Mail-Text";
     
    //mail($empfaenger, $betreff, $text, $from);
    mail($empfaenger$betreff$text"From: Absender <meinemail@web.de>");
     
    ?>
    Wenn ich jedoch in der Mail-Funktion den Absender gegen irgendein Wort austausche, kommt die Mail sofort an...

    PHP-Code:
    mail($empfaenger$betreff$text"From: Absender <unsinn>"); 
    Jedoch mit fehlerhaftem Absender:



    Hat irgendjemand ne Idee, was da falsch läuft??
    Bin verzweifelt..
    Angehängte Dateien

  • #2
    Mit der PHP-Funktion mail() kann man E-Mails versenden. Aber damit hat der Entwickler oft viele Sorgen. Für den korrekten E-Mail Versand sind verschiedene Mail-Header notwendig. Ohne die richtigen Header bekommen viele Mail-Clients Probleme bei der Anzeige oder empfangen diese erst gar nicht. Allerdings ist es aufgrund der Komplexität sehr aufwändig, alle sich damit befassenden RFC-Dokumente selbst durchzuarbeiten und anzuwenden. Stattdessen sollte man Mailerklassen verwenden, die diese Header korrekt einbinden.


    Tipp: phpMailer

    Kommentar


    • #3
      Zitat von bandit600 Beitrag anzeigen
      Mit der PHP-Funktion mail() kann man E-Mails versenden. Aber damit hat der Entwickler oft viele Sorgen. Für den korrekten E-Mail Versand sind verschiedene Mail-Header notwendig. Ohne die richtigen Header bekommen viele Mail-Clients Probleme bei der Anzeige oder empfangen diese erst gar nicht. Allerdings ist es aufgrund der Komplexität sehr aufwändig, alle sich damit befassenden RFC-Dokumente selbst durchzuarbeiten und anzuwenden. Stattdessen sollte man Mailerklassen verwenden, die diese Header korrekt einbinden.


      Tipp: phpMailer
      Was zur Beantwortung der Frage genau Null beiträgt.

      Zitat von bandit600 Beitrag anzeigen
      ....Stattdessen sollte man Mailerklassen verwenden, die diese Header korrekt einbinden.
      Das sehe ich übrigens komplett anders, der geringste Fehler in der Klasse und hunderttausende Webseiten sind Missbrauch gefährdet! Ebenso könnte man dafür plädieren nur Wordpress einzusetzen, weil die ohnedies viel besser PHP coden können. Und so schwer ist die korrekte Einbindung von mail() nun auch wieder nicht. PHP bietet ja Funktionen wie z.B. filter_var() um die Einhaltung der Standards zu prüfen. Im Übrigen nutzen php-mailer letztendlich selber meist mail()

      Auf Sonderzeichen checken und eventuel das probieren:

      PHP-Code:
      $header = array(
          
      'From' => 'bla@example.com',
          
      'Reply-To' => 'foo@example.com',
          
      'X-Mailer' => 'PHP/' phpversion()
      );

      mail($empfaenger$betreff$nachricht$header); 
      Zuletzt geändert von SysOp; 02.05.2019, 13:44.

      Kommentar


      • #4
        Die Verwendung von mail() ist eben weitaus komplexer und fehleranfälliger, und schon gar nichts für Anfänger sondern nur für Leute, die genau wissen was sie tun.

        Davon abgesehen, wenn man nach deiner Logik geht, dürfte man auch kein PHP verwenden. Denn der geringste Fehler in PHP könnte hunderttausende Webseiten gefährden.
        Zuletzt geändert von h3ll; 02.05.2019, 14:20.

        Kommentar


        • #5
          Zitat von SysOp Beitrag anzeigen
          Auf Sonderzeichen checken und eventuel das probieren:

          PHP-Code:
          <?php
          $empfaenger 
          "meinemail@web.de";
          $betreff "Die Mail-Funktion";
          $text "Hier steht mein E-Mail-Text";
          $header = array(
              
          'From' => 'meinemail@web.de',
              
          'Reply-To' => 'meinemail@web.de',
              
          'X-Mailer' => 'PHP/' phpversion()
          );

          mail($empfaenger$betreff$nachricht$header)

          ?>

          Grade probiert, jedoch kommt im Postfach nichts an... :-(
          Ich werd mich dann wohl doch mal mit dem phpmailer befassen müssen..


          Danke trotzdem...

          Kommentar


          • #6
            Hey Leute,

            ich bin mit meinem Problem noch nicht weiter. Ich habe es mit Swifmailer und phpmailer probiert. Bei beiden passiert einfach gar nix. Ich bekomme bei beiden Varianten ein leeres Browserfenster und keine Mails.

            Habt ihr nen Tipp was ich falsch mache??
            Anbei noch die jeweilige Verzeichnisstruktur.


            Swiftmailer-Code:
            PHP-Code:
            <?php
            // SwiftMailer Autoloader einbinden
            require_once 'lib/swift_required.php';

            // Das Transport-Objekt
            $oTransport Swift_SmtpTransport::newInstance'smtp.web.de'587'tls' );
            $oTransport->setUsername'meinemail@web.de' );
            $oTransport->setPassword'passwort' );

            // Das Message-Objekt
            $oMessage Swift_Message::newInstance('Web Lead');
            $oMessage->setFrom'meinemail@web.de' );
            $oMessage->setTo'meinemail@web.de''Max Mustermann' );
            //$oMessage->setCc( 'maria.mustermann@example.com', 'Maria Mustermann' );
            $oMessage->setSubject'PHProcks! Tutorials - less time to learn more' );
            $oMessage->setBody'<h1>PHProcks!</h1><h2>Tutorial: HTML E-Mail senden mit SwiftMailer</h2>''text/html' );
            $oMessage->addPartstrip_tags($oMessage->getBody()), 'text/plain' );

            // Das Mailer-Objekt
            $oMailer Swift_Mailer::newInstance$oTransport );

            // Versenden der Mail und prüfen, auf Versendet
            if ( !$oMailer->send($oMessage) ) {

                echo 
            'Something\'s went wrong!';
                exit;

            }


            echo 
            'Yes! First Mail with SwiftMailer sent successfully!'

            ?>
            </div>

            PHPmailer-Code:
            PHP-Code:
            <?php
            //use PHPMailer\PHPMailer\PHPMailer;
            //use PHPMailer\PHPMailer\Exception;

            require 'PHPMailerAutoload.php';
            //include_once __DIR__ . 'PHPMailerAutoload.php'; 

            $oMailer = new PHPMailer;
            $oMailer->CharSet 'UTF-8';


            $oMailer->isSMTP();                                // SMTP aktivieren
            $oMailer->Host 'smtp.web.de';                    // SMTP-Server 'smtp.example.com'
            $oMailer->SMTPAuth true;                        // SMTP Authentifizierung aktivieren
            $oMailer->Username 'meinemail@web.de';        // SMTP Benutzer 'phprocks@example.com'
            $oMailer->Password 'passwort';                // SMTP Benutzer Passwort
            $oMailer->SMTPSecure 'tls';                    // Verbindungssicherheit setzen ( SSL und TLS möglich )
            $oMailer->Port 587;                            // Verbindungsport festlegen
            $oMailer->CharSet "UTF-8";                    // Kodierung festlegen

            $oMailer->setFrom('meinemail@web.de''Max Mustermann');            // Absender Alias setzen
            $oMailer->addReplyTo'meinemail@web.de''Max Mustermann' ); // Empfänger Adresse und Alias hinzufügen

            $oMailer->addAdress'meinemail@web.de'); // Empfänger Adresse und Alias hinzufügen
            $oMailer->isHTMLtrue );                                                                    // HTML aktivieren

            $oMailer->Subject 'PHProcks! Tutorials - less time to learn more';                        // Betreff
            $oMailer->Body '<h1>PHProcks!</h1><h2>Tutorial: HTML E-Mail senden mit PHPMailer</h2>';    // Der Nachrichteninhalt als HTML
            $oMailer->AltBody strip_tags$oMailer->Body );                                             // Alternaiver Nachrichteninhalt für Clients, die kein HTML darstellen


            if ( !$oMailer->send() ) {
                echo 
            'Die Mail konnte nicht verschickt werden.';
            } else {
                echo 
            'Die Mail wurde verschickt.';
            }
            ?>
            Angehängte Dateien

            Kommentar


            • #7
              Leeres Browser-Fenster -> ins PHP-Error-Log schauen und die Fehlermeldung lesen.

              Kommentar


              • #8
                is nur leider auch leer...
                Angehängte Dateien

                Kommentar


                • #9
                  Schaust du da ins richtige Error Log? Wie gesagt, wenns einen Fehler gibt, gibts auch eine Fehlermeldung. Wenn der Server nicht vernünftig konfiguriert ist und deswegen die Fehler untergehen, versuche einen anderen Server.

                  Kommentar


                  • #10
                    Zitat von dermilco Beitrag anzeigen
                    Grade probiert, jedoch kommt im Postfach nichts an... :-(
                    Ich werd mich dann wohl doch mal mit dem phpmailer befassen müssen..

                    Danke trotzdem...
                    Wenn das nicht einmal funktioniert, hat es etwas anderes.

                    Kommentar


                    • #11
                      Hi Leute,

                      ich bin mit meiner Mail-Funktion leider immer noch nicht weiter und könnte verzweifeln. Ich habe nun den PHPMailer von vorn aufgesetzt und mich (denke ich) streng an die Beschreibung gehalten. Dennoch klappt es nicht..
                      Im Error-Log steht nach wie vor kein Fehler drin...

                      Ich hoste auf strato.de und will zu Testzwecken aber Mails über meinen web.de-Freemail-Account versenden.


                      Könnt ihr bitte mal auf den Code und die Ordnerstruktur schauen wegen der Pfade? Kann das so überhaupt klappen?
                      Hier der Code der Datei a-test.php im Root-Verzeichnis:
                      PHP-Code:
                      <?php 
                      use PHPMailer\PHPMailer\PHPMailer;
                      use 
                      PHPMailer\PHPMailer\Exception;

                      require 
                      __DIR__ '/PHPMailer/src/Exception.php';
                      require 
                      __DIR__ '/PHPMailer/src/PHPMailer.php';
                      require 
                      __DIR__ '/PHPMailer/src/SMTP.php'
                      $oMailer = new PHPMailer;
                      $oMailer->CharSet 'UTF-8'



                      // SMTP aktivieren
                      $oMailer->isSMTP();

                      // SMTP-Server
                      $oMailer->Host 'smtp.web.de';

                      // SMTP Authentifizierung aktivieren
                      $oMailer->SMTPAuth true;

                      // SMTP Benutzer
                      $oMailer->Username 'nutzer@web.de';

                      // SMTP Benutzer Passwort
                      $oMailer->Password 'passwort';

                      // Verbindungssicherheit setzen ( SSL und TLS möglich )
                      $oMailer->SMTPSecure 'ssl';

                      // Verbindungsport festlegen
                      $oMailer->Port 587



                      // Absender Adresse setzen
                      $oMailer->From 'nutzer@web.de';

                      // Absender Alias setzen
                      $oMailer->FromName 'PHProcks';

                      // Empfänger Adresse und Alias hinzufügen
                      //$oMailer->addAddress( 'max.mustermann@example.com', 'Max Mustermann' ); 



                      // HTML aktivieren
                      $oMailer->isHTMLtrue );

                      // Betreff
                      $oMailer->Subject 'PHProcks! Tutorials - less time to learn more';

                      // Der Nachrichteninhalt als HTML
                      $oMailer->Body '<h1>PHProcks!</h1><h2>Tutorial: HTML E-Mail senden mit PHPMailer</h2>';

                      // Alternaiver Nachrichteninhalt für Clients, die kein HTML darstellen
                      $oMailer->AltBody strip_tags$oMailer->Body ); 



                      if ( !
                      $oMailer->send() ) {
                          echo 
                      'Something\'s went so wrong!';
                          exit;
                      } else {
                            echo 
                      'Yes! First Mail with PHPMailer sent successfully!'
                      }
                      echo 
                      'test';


                      ?>
                      ok1
                      Angehängte Dateien

                      Kommentar


                      • #12
                        Und was ist das Fehlerbild?

                        Kommentar


                        • #13
                          na eben nix...


                          Der Browser zeigt beim Aufruf der Seite ein leeres Fenster an.
                          Es kommt keine Mail im Postfach an.
                          Und im Fehler-Logfile steht auch gar nichts drin.

                          Kommentar


                          • #14
                            Dann ist der Server falsch konfiguriert, wenn keine Fehler geloggt werden. Wende dich an den Serverbetreiber.

                            Davon abgesehen, läuft der Code auf deinem Entwicklungsserver?

                            Kommentar


                            • #15
                              Doch, wenn ich bewusst Fehler programmiere, werden dort auch Fehler ausgegeben... Aber eben nicht mit diesem Code, den ich hier zuletzt gepostet habe..


                              Würdest du den Code mal bei dir ausprobieren?

                              Kommentar

                              Lädt...
                              X