Die PHP-Mail-Funktion schließt das Senden von E-Mails nicht ab

  •  <?php
        $name = $_POST['name'];
        $email = $_POST['email'];
        $message = $_POST['message'];
        $from = 'From: yoursite.com'; 
        $to = 'contact@yoursite.com'; 
        $subject = 'Customer Inquiry';
        $body = "From: $name\n E-Mail: $email\n Message:\n $message";
    
        if ($_POST['submit']) {
            if (mail ($to, $subject, $body, $from)) { 
                echo '<p>Your message has been sent!</p>';
            } else { 
                echo '<p>Something went wrong, go back and try again!</p>'; 
            }
        }
    ?>
     

    Ich habe versucht, ein einfaches Mailformular zu erstellen. Das Formular selbst befindet sich auf meiner index.html -Seite, es wird jedoch eine separate Seite "&& 3&&]", in der der obige PHP-Code eingebettet ist, übermittelt. Der Code wird einwandfrei übermittelt, sendet jedoch keine E-Mail . bitte helfen Sie.

    04 August 2017
    MachavityMatthias Scholz
24 answers
  • Obwohl es Teile dieser Antwort gibt, die nur für die Verwendung der Funktion mail() gelten, können viele dieser Fehlerbehebungsschritte auf jedes PHP-Mailing-System angewendet werden.

    Es gibt verschiedene Gründe, warum Ihr Skript anscheinend keine E-Mails sendet. Es ist schwierig, diese Dinge zu diagnostizieren, es sei denn, es liegt ein offensichtlicher Syntaxfehler vor. Ohne diese Option müssen Sie die nachstehende Checkliste durchgehen, um mögliche Fallstricke zu finden, auf die Sie möglicherweise stoßen.

    Stellen Sie sicher, dass die Fehlerberichterstattung aktiviert ist, und stellen Sie alle Fehler ein

    Die Fehlerberichterstattung ist wichtig, um Fehler in Ihrem Code zu beseitigen und allgemeine Fehler, auf die PHP stößt. Die Fehlerberichterstattung muss aktiviert sein, um diese Fehler zu erhalten. Wenn Sie den folgenden Code oben in Ihren PHP-Dateien (oder in einer Master-Konfigurationsdatei) platzieren, wird die Fehlerberichterstattung aktiviert.

     error_reporting(-1);
    ini_set('display_errors', 'On');
    set_error_handler("var_dump");
     

    Weitere Informationen hierzu finden Sie in dieser Stack Overflow-Antwort .

    Stellen Sie sicher, dass die Funktion mail() als

    bezeichnet wird. Es kann dumm erscheinen, aber ein häufiger Fehler besteht darin, die Funktion mail() tatsächlich in Ihrem Code zu platzieren. Stellen Sie sicher, dass es dort ist und nicht auskommentiert ist.

    Stellen Sie sicher, dass die Funktion mail() korrekt aufgerufen wird

    bool mail (Zeichenfolge $ to, Zeichenfolge $ subject, Zeichenfolge $ message [, Zeichenfolge $ additional_headers [, Zeichenfolge $ additional_parameters]])

    Die Die Mail-Funktion benötigt drei Parameter und optional einen vierten und einen fünften. Wenn Ihr Aufruf an mail() nicht über mindestens drei Parameter verfügt, schlägt dies fehl.

    Wenn Ihr Aufruf an mail() nicht die richtigen Parameter in der richtigen Reihenfolge enthält, schlägt der Befehl ebenfalls fehl.

    Überprüfen Sie die Mail-Protokolle des Servers

    Ihr Webserver sollte alle Versuche protokollieren, E-Mails über ihn zu senden. Der Speicherort dieser Protokolle ist unterschiedlich (möglicherweise müssen Sie Ihren Serveradministrator nach dem Ort der Protokolle fragen)Sie befinden sich häufig im Stammverzeichnis des Benutzers unter logs. Es enthält Fehlermeldungen, die vom Server gemeldet wurden, falls vorhanden, in Bezug auf Ihre Versuche, E-Mails zu senden.

    Auf Verbindungsfehler prüfen

    Die Portblockierung ist ein sehr häufiges Problem, dem die meisten Entwickler begegnen, wenn sie ihren Code integrieren, um E-Mails über SMTP zu übermitteln. Dies kann leicht an den Server-Mail-Protokollen nachverfolgt werden (der Speicherort des Servers für das Mail-Protokoll kann, wie oben erläutert, von Server zu Server variieren). Wenn Sie sich auf einem gemeinsam genutzten Hosting-Server befinden, bleiben die Ports 25 und 587 standardmäßig gesperrt. Diese Blockierung wurde absichtlich von Ihrem Hosting-Provider durchgeführt. Dies gilt sogar für einige der dedizierten Server. Wenn diese Ports gesperrt sind, versuchen Sie, eine Verbindung über Port 2525 herzustellen. Wenn Sie feststellen, dass der Port ebenfalls gesperrt ist, können Sie die Bereitstellung dieser Ports durch den Hosting-Provider aufheben.

    Die meisten Hosting-Provider blockieren diese E-Mail-Ports, um ihr Netzwerk vor dem Versenden von Spam-E-Mails zu schützen.

    Verwenden Sie die Ports 25 oder 587 für einfache / TLS-Verbindungen und Port 465 für SSL-Verbindungen. Für die meisten Benutzer wird die Verwendung von Port 587 empfohlen, um von einigen Hosting-Providern festgelegte Ratenbegrenzungen zu vermeiden.

    Verwenden Sie nicht den Fehlerunterdrückungsoperator

    Wenn der Fehlerunterdrückungsoperator && 4&&] wird einem Ausdruck in PHP vorangestellt. Alle Fehlermeldungen, die von diesem Ausdruck generiert werden, werden ignoriert. Unter bestimmten Umständen ist die Verwendung dieses Operators erforderlich, aber das Senden von E-Mails ist nicht .

    Wenn Ihr Code @mail(...) enthält, verbergen Sie sich möglicherweise Wichtige Fehlermeldungen, die Ihnen beim Debuggen helfen. Entfernen Sie @ und prüfen Sie, ob Fehler gemeldet werden.

    Dies ist nur ratsam, wenn Sie prüfen miterror_get_last() unmittelbar danach für konkrete Fehler.

    Überprüfen Sie den Rückgabewert mail()

    Die mail() Funktion:

    Gibt TRUE zurück, wenn die Mail erfolgreich zur Zustellung angenommen wurde, andernfalls FALSE. Es ist wichtig zu wissen, dass die E-Mail das beabsichtigte Ziel NICHT erreicht, nur weil die Mail zur Zustellung angenommen wurde.

    Das ist wichtig zu beachten, weil:

    • Wenn Sie einen Rückgabewert von FALSE erhalten, wissen Sie, dass der Fehler darin liegt, dass Ihr Server Ihre E-Mails akzeptiert. Dies ist wahrscheinlich kein Codierungsproblem, sondern ein Problem mit der Serverkonfiguration. Sie müssen mit Ihrem Systemadministrator sprechen, um herauszufinden, warum dies passiert.
    • Wenn Sie einen Rückgabewert von TRUE erhalten, bedeutet dies nicht, dass Ihre E-Mail auf jeden Fall gesendet wird. Dies bedeutet lediglich, dass die E-Mail erfolgreich von PHP an den jeweiligen Handler auf dem Server gesendet wurde. Es gibt noch weitere Fehlerpunkte außerhalb der Kontrolle von PHP, die dazu führen können, dass die E-Mail nicht gesendet wird.

    Daher hilft FALSE Ihnen dabei Die richtige Richtung, wohingegen TRUE nicht bedeutet, dass Ihre E-Mail erfolgreich gesendet wurde. Dies ist wichtig zu beachten!

    Stellen Sie sicher, dass Ihr Hosting-Provider das Senden von E-Mails zulässt und das Senden von E-Mails nicht einschränkt.

    Viele gemeinsam genutzt Webhosts, insbesondere kostenlose Webhosting-Anbieter, erlauben weder das Versenden von E-Mails von ihren Servern, noch begrenzen sie die Menge, die innerhalb eines bestimmten Zeitraums gesendet werden kann. Dies liegt an ihren Bemühungen, die Spammer davon abzuhalten, ihre günstigeren Dienste in Anspruch zu nehmen.

    Wenn Sie der Meinung sind, dass Ihr Host E-Mail-Beschränkungen hat oder das Senden von E-Mails blockiert, prüfen Sie in den häufig gestellten Fragen, ob dort Einschränkungen aufgeführt sind. Andernfalls müssen Sie sich möglicherweise an den Support wenden, um zu überprüfen, ob Einschränkungen beim Senden von E-Mails bestehen.

    Spam-Ordner prüfen; Verhindern, dass E-Mails als Spam markiert werden

    Oft werden aus verschiedenen Gründen über PHP (und andere serverseitige Programmiersprachen) gesendete E-Mails im Spam-Ordner eines Empfängers abgelegt. Überprüfen Sie dort immer den Code, bevor Sie Probleme mit der Fehlerbehebung beheben.

    Um zu verhindern, dass E-Mails, die über PHP gesendet werden, an den Spam-Ordner eines Empfängers gesendet werden, gibt es verschiedene Möglichkeiten, sowohl in Ihrem PHP-Code als auch in Ihrem Code Ansonsten, um die Wahrscheinlichkeit zu minimieren, dass Ihre E-Mails als Spam markiert werden. Gute Tipps von Michiel de Mare umfassen:

    • Verwenden Sie E-Mail-Authentifizierungsmethoden wie SPF . und DKIM , um nachzuweisen, dass Ihre E-Mails und Ihr Domainname zusammengehören, und um Spoofing zu verhindern Ihres Domainnamens. Die SPF-Website enthält einen Assistenten zum Generieren der DNS-Informationen für Ihre Site.
    • Check Ihr Reverse DNS , um sicherzustellen, dass die IP-Adresse Ihres Mail-Servers auf die Domäne verweist Name, den Sie zum Versenden von E-Mails verwenden.
    • Stellen Sie sicher, dass die verwendete IP-Adresse nicht auf einer schwarzen Liste
    • Stellen Sie sicher, dass die Antwortadresse eine gültige, vorhandene Adresse ist.
    • Verwenden Sie im An-Feld den vollständigen, echten Namen des Empfängers, nicht nur die E-Mail-Adresse (z. B. "John Smith" <john@blacksmiths-international.com>).
    • Überwachen Sie Ihre Missbrauchskonten, wie z. B. abuse@yourdomain.com und postmaster@ihredomain.com. Das bedeutet: Stellen Sie sicher, dass diese Konten vorhanden sind, lesen Sie, was an sie gesendet wurde, und gehen Sie auf Beschwerden vor.
    • Machen Sie es schließlich wirklich einfach, sich abzumelden. Andernfalls können sich Ihre Benutzer durch Drücken der Schaltfläche Spam abmelden. Dies wirkt sich auf Ihre Reputation aus.

    Weitere Informationen zu diesem Thema finden Sie unter Wie stellen Sie sicher, dass programmgesteuert gesendete E-Mails nicht automatisch als Spam markiert werden? .

    Vergewissern Sie sich, dass alle Mail-Header angegeben sind.

    Einige Spam-Programme lehnen Mails ab, wenn allgemeine Header wie "Von" fehlen. und "Antwort an":

     $headers = array("From: from@example.com",
        "Reply-To: replyto@example.com",
        "X-Mailer: PHP/" . PHP_VERSION
    );
    $headers = implode("\r\n", $headers);
    mail($to, $subject, $message, $headers);
     

    Stellen Sie sicher, dass Mail-Header keine Syntaxfehler aufweisen

    Ungültige Kopfzeilen sind genauso schlecht wie keine Kopfzeilen. Ein falsches Zeichen kann ausreichen, um Ihre E-Mail zu entgleisen. Prüfen Sie, ob Ihre Syntax korrekt ist, da PHP diese Fehler nicht fangen wird.

     $headers = array("From from@example.com", // missing colon
        "Reply To: replyto@example.com",      // missing hyphen
        "X-Mailer: "PHP"/" . PHP_VERSION      // bad quotes
    );
     

    Stellen Sie sicher, dass der Empfängerwert korrekt ist.

    Manchmal ist das Problem so einfach wie ein falscher Wert für den Empfänger der E-Mail. Dies kann auf die Verwendung einer falschen Variablen zurückzuführen sein.

     $to = 'user@example.com';
    // other variables ....
    mail($recipient, $subject, $message, $headers); // $recipient should be $to
     

    Eine andere Möglichkeit, dies zu testen, besteht darin, den Empfängerwert in den Funktionsaufruf mail() zu codieren:

     mail('user@example.com', $subject, $message, $headers); 
     

    Dies kann für alle Parameter mail() gelten.

    An mehrere Konten senden

    Um Probleme mit dem E-Mail-Konto auszuschließen, senden Sie Ihre E-Mail an mehrere E-Mail-Konten bei verschiedenen E-Mail-Anbietern . Wenn Ihre E-Mails nicht im Gmail-Konto eines Benutzers eingehen, senden Sie dieselben E-Mails an ein Yahoo-Konto, ein Hotmail-Konto und ein reguläres POP3-Konto (wie Ihr vom ISP bereitgestelltes E-Mail-Konto).

    Wenn die E-Mails bei allen oder einigen anderen E-Mail-Konten ankommen, wissen Sie, dass Ihr Code E-Mails sendet, aber der E-Mail-Kontenanbieter blockiert sie aus irgendeinem Grund. Wenn die E-Mail bei keinem E-Mail-Konto ankommt, ist das Problem eher auf Ihren Code zurückzuführen.

    Stellen Sie sicher, dass der Code dem f entsprichtorm-Methode

    Wenn Sie Ihre Formularmethode auf POST gesetzt haben, stellen Sie sicher, dass Sie $_POST verwenden, um nach Ihren Formularwerten zu suchen. Wenn Sie den Wert auf GET gesetzt haben oder überhaupt nicht festgelegt haben, stellen Sie sicher, dass Sie mit $_GET nach Ihren Formularwerten suchen.

    Stellen Sie sicher, dass Ihr Formular action value zeigt auf den richtigen Speicherort

    Stellen Sie sicher, dass das Attribut action von form einen Wert enthält, der auf Ihren PHP-Mailing-Code verweist.

     <form action="send_email.php" method="POST">
     

    Stellen Sie sicher, dass der Webhost das Senden von E-Mails unterstützt

    Einige Webhosting-Anbieter erlauben oder erlauben das Senden von E-Mails über ihre Server nicht. Die Gründe dafür können unterschiedlich sein, aber wenn sie das Versenden von E-Mails deaktiviert haben, müssen Sie eine alternative Methode verwenden, bei der diese E-Mails von einem Dritten gesendet werden.

    Eine E-Mail an ihren technischen Support (nach einem Besuch beim Online-Support oder den häufig gestellten Fragen), sollte geklärt werden, ob E-Mail-Funktionen auf Ihrem Server verfügbar sind.

    Stellen Sie sicher, dass der Mailserver localhost

    Wenn Sie auf Ihrer lokalen Workstation mit WAMP, MAMP oder XAMPP entwickeln, ist wahrscheinlich kein E-Mail-Server auf Ihrer Workstation installiert. Ohne diese Option kann PHP standardmäßig keine E-Mails senden.

    Sie können dies umgehen, indem Sie einen einfachen Mail-Server installieren. Für Windows können Sie die kostenlose Mercury Mail verwenden.

    Sie können SMTP auch zum Senden Ihrer E-Mails verwenden. diese großartige Antwort von Vikas Dwivedi , um zu erfahren, wie Sie dies tun können.

    Aktivieren Sie PHPs benutzerdefiniertes mail.log

    Zusätzlich zu Ihrem In der Protokolldatei von MTA und PHP können Sie die Protokollierung für aktivieren mail() -Funktion speziell. Es zeichnet nicht das vollständige SMTP aufInteraktion, aber mindestens Funktionsaufrufparameter und Aufrufskript.

     ini_set("mail.log", "/tmp/mail.log");
    ini_set("mail.add_x_header", TRUE);
     

    Siehe http://php.net/manual/de/mail.configuration.php für weitere Informationen. (Diese Optionen sollten Sie am besten in den Optionen php.ini oder .user.ini oder .htaccess aktivieren.)

    Prüfen Sie bei einem Mail-Test-Service

    Es gibt verschiedene Zustellungs- und Spam-Überprüfungsdienste, mit denen Sie die Einrichtung Ihres MTA / Webservers testen können. Normalerweise senden Sie eine E-Mail-Sonde an: ihre Adresse und erhalten später einen Zustellungsbericht sowie weitere konkrete Fehler oder Analysen:

  • Mail-Header in der Mail-Funktion hinzufügen

     $header = "From: noreply@example.com\r\n"; 
    $header.= "MIME-Version: 1.0\r\n"; 
    $header.= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
    $header.= "X-Priority: 1\r\n"; 
    
    $status = mail($to, $subject, $message, $header);
    
    if($status)
    { 
        echo '<p>Your mail has been sent!</p>';
    } else { 
        echo '<p>Something went wrong, Please try again!</p>'; 
    }
     
    29 September 2016
    er.irfankhan11
    1. Versuchen Sie immer, Header in der E-Mail-Funktion zu senden.
    2. Wenn Sie E-Mails über localhost senden, nehmen Sie die SMTP-Einstellungen zum Versenden von E-Mails vor.
    3. Wenn Sie E-Mails über den Server senden, überprüfen Sie, ob die E-Mail-Versandfunktion auf Ihrem Server aktiviert ist.
    20 May 2015
    sonam gupta
  • Verwenden Sie die SMTP-Konfiguration zum Versenden Ihrer E-Mails? versuchen Sie es stattdessen mit phpmailer. Sie können die Bibliothek von https://github.com/PHPMailer/PHPMailer herunterladen. Ich habe meine E-Mail auf folgende Weise erstellt:

     function send_mail($email, $recipient_name, $message='')
    {
        require("phpmailer/class.phpmailer.php");
    
        $mail = new PHPMailer();
    
        $mail->CharSet="utf-8";
        $mail->IsSMTP();                                      // set mailer to use SMTP
        $mail->Host = "mail.example.com";  // specify main and backup server
        $mail->SMTPAuth = true;     // turn on SMTP authentication
        $mail->Username = "myusername";  // SMTP username
        $mail->Password = "p@ssw0rd"; // SMTP password
    
        $mail->From = "me@walalang.com";
        $mail->FromName = "System-Ad";
        $mail->AddAddress($email, $recipient_name);
    
        $mail->WordWrap = 50;                                 // set word wrap to 50 characters
        $mail->IsHTML(true);                                  // set email format to HTML (true) or plain text (false)
    
        $mail->Subject = "This is a Sampleenter code here Email";
        $mail->Body    = $message;
        $mail->AltBody = "This is the body in plain text for non-HTML mail clients";    
        $mail->AddEmbeddedImage('images/logo.png', 'logo', 'logo.png');
        $mail->addAttachment('files/file.xlsx');
    
        if(!$mail->Send())
        {
           echo "Message could not be sent. <p>";
           echo "Mailer Error: " . $mail->ErrorInfo;
           exit;
        }
    
        echo "Message has been sent";
    }
     
    09 July 2014
    oneDerer
  • Fügen Sie einfach einige Header hinzu, bevor Sie E-Mails senden:

     <?php 
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'From: yoursite.com'; 
    $to = 'contact@yoursite.com'; 
    $subject = 'Customer Inquiry';
    $body = "From: $name\n E-Mail: $email\n Message:\n $message";
    
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html\r\n";
    $headers .= 'From: from@example.com' . "\r\n" .
    'Reply-To: reply@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
    
    mail($to, $subject, $message, $headers);
     

    Und noch etwas. Die Funktion mail() funktioniert in localhost nicht. Laden Sie Ihren Code auf einen Server hoch und versuchen Sie es.

    13 January 2017
    Nisse EngströmKebron
  • Es hat bei 000webhost für mich funktioniert, indem Sie Folgendes tun:

     $headers  = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
    $headers .= "From: ". $from. "\r\n";
    $headers .= "Reply-To: ". $from. "\r\n";
    $headers .= "X-Mailer: PHP/" . phpversion();
    $headers .= "X-Priority: 1" . "\r\n"; 
     

    Geben Sie die E-Mail direkt ein Adresse beim Senden der E-Mail

     mail('email@gmail.com', $subject, $message, $headers)
     

    Verwenden Sie '' und nicht ""

    Dieser Code funktioniert, aber die E-Mail wurde mit einer halben Stunde Verzögerung empfangen.

    29 September 2015
    bat .t
  • Meistens ist die Funktion mail() im Shared Hosting deaktiviert. Eine bessere Option ist die Verwendung von SMTP. Die beste Option wäre Google Mail oder SendGrid.


    SMTPconfig.php

     <?php 
        $SmtpServer="smtp.*.*";
        $SmtpPort="2525"; //default
        $SmtpUser="***";
        $SmtpPass="***";
    ?>
     

    SMTPmail.php

    <|
     <?php
    class SMTPClient
    {
    
        function SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body)
        {
    
            $this->SmtpServer = $SmtpServer;
            $this->SmtpUser = base64_encode ($SmtpUser);
            $this->SmtpPass = base64_encode ($SmtpPass);
            $this->from = $from;
            $this->to = $to;
            $this->subject = $subject;
            $this->body = $body;
    
            if ($SmtpPort == "") 
            {
                $this->PortSMTP = 25;
            }
            else
            {
                $this->PortSMTP = $SmtpPort;
            }
        }
    
        function SendMail ()
        {
            $newLine = "\r\n";
            $headers = "MIME-Version: 1.0" . $newLine;  
            $headers .= "Content-type: text/html; charset=iso-8859-1" . $newLine;  
    
            if ($SMTPIN = fsockopen ($this->SmtpServer, $this->PortSMTP)) 
            {
                fputs ($SMTPIN, "EHLO ".$HTTP_HOST."\r\n"); 
                $talk["hello"] = fgets ( $SMTPIN, 1024 ); 
                fputs($SMTPIN, "auth login\r\n");
                $talk["res"]=fgets($SMTPIN,1024);
                fputs($SMTPIN, $this->SmtpUser."\r\n");
                $talk["user"]=fgets($SMTPIN,1024);
                fputs($SMTPIN, $this->SmtpPass."\r\n");
                $talk["pass"]=fgets($SMTPIN,256);
                fputs ($SMTPIN, "MAIL FROM: <".$this->from.">\r\n"); 
                $talk["From"] = fgets ( $SMTPIN, 1024 ); 
                fputs ($SMTPIN, "RCPT TO: <".$this->to.">\r\n"); 
                $talk["To"] = fgets ($SMTPIN, 1024); 
                fputs($SMTPIN, "DATA\r\n");
                $talk["data"]=fgets( $SMTPIN,1024 );
                fputs($SMTPIN, "To: <".$this->to.">\r\nFrom: <".$this->from.">\r\n".$headers."\n\nSubject:".$this->subject."\r\n\r\n\r\n".$this->body."\r\n.\r\n");
                $talk["send"]=fgets($SMTPIN,256);
                //CLOSE CONNECTION AND EXIT ... 
                fputs ($SMTPIN, "QUIT\r\n"); 
                fclose($SMTPIN); 
                // 
            } 
            return $talk;
        } 
    }
    ?>
     

    contact_email.php

     <?php 
    include('SMTPconfig.php');
    include('SMTPmail.php');
    if($_SERVER["REQUEST_METHOD"] == "POST")
    {
        $to = "";
        $from = $_POST['email'];
        $subject = "Enquiry";
        $body = $_POST['name'].'</br>'.$_POST['companyName'].'</br>'.$_POST['tel'].'</br>'.'<hr />'.$_POST['message'];
        $SMTPMail = new SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body);
        $SMTPChat = $SMTPMail->SendMail();
    }
    ?>
     
    13 January 2017
    Karthik
  • Wenn Sie nur die Funktion mail() verwenden, müssen Sie die Konfigurationsdatei ausfüllen.

    Sie müssen die Mail-Erweiterung öffnen und die SMTP smtp_port und so weiter und vor allem Ihren Benutzernamen und Ihr Passwort. Ohne das kann keine Mail gesendet werden. Sie können auch die PHPMail-Klasse zum Senden verwenden.

    08 September 2014
    Peter O.zebrabox
  • Probieren Sie diese beiden Thigs einzeln und zusammen aus:

    1. Entfernen Sie die if($_POST['submit']){}
    2. Entfernen Sie $from (nur mein Bauch)
    11 February 2015
    vldfr
  • Ich denke, das sollte den Trick tun. Ich habe gerade eine if(isset hinzugefügt und den Variablen im Body Verkettung hinzugefügt, um PHP von HTML zu trennen.

     <?php
        $name = $_POST['name'];
        $email = $_POST['email'];
        $message = $_POST['message'];
        $from = 'From: yoursite.com'; 
        $to = 'contact@yoursite.com'; 
        $subject = 'Customer Inquiry';
        $body = "From:" .$name."\r\n E-Mail:" .$email."\r\n Message:\r\n" .$message;
    
    if (isset($_POST['submit'])) 
    {
        if (mail ($to, $subject, $body, $from)) 
        { 
            echo '<p>Your message has been sent!</p>';
        } 
        else 
        { 
            echo '<p>Something went wrong, go back and try again!</p>'; 
        }
    }
    
    ?>
     
    13 January 2017
    Nisse EngströmKebron