jQuery Formular senden

akdesign

Erfahrenes Mitglied
Hallo,

ich muss in meiner php-Datei einen Fehler haben, da ich nach dem Absenden des Formulars einfach keine Mail erhalte, also das Formular wohl nicht gesendet wird, oder zumindest nicht bei mir ankommt.

Codeschnipsel:
HTML:
<div data-role="fieldcontain">
                <form id="newsletter" action="signup2.php" method="post">
                     <input type="email" id="email" value="Enter your e-mail"/>
                     <input class="senden" type="submit" value="Join!" >
               </form>
              </div>

Code:
<script>
    $(document).ready(function() {
    $('#newsletter').submit(function() {
        alert("Thank you for subscribing to the newsletter!");
        $.ajax( {
            type: "POST",
            url: "signup.php",
            data: $("#email").val (),
           
        });
        return false;
        });
    });
</script>

PHP:
<?php
       
    $empfaenger = "a.kessler@kessler-creativdesign.de";
    $from = $_POST['email'];
   
    mail($empfaenger, $from);

   
?>

oder hier:
http://www.hope-communications.com/SpinaOrganics/Neu
 
Hmm, ich finde den Fehler nicht.

Allerdings habe ich eben mal ein Kontaktformular getestet, das ich vor langer Zeit mal angelegt hatte, und das immer funktionierte - jetzt aber nicht mehr.

Kann das mit der php Version zu tun haben?
 
Hi akdesign,

versuch mal alle notwendigen Parameter an die mail-Funktion zu übergeben:

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

Wenn das nicht zum Erfolg führt, teste bitte mit var_dump den Rückgabewert.

Viele Grüße
 
Allerdings habe ich eben mal ein Kontaktformular getestet, das ich vor langer Zeit mal angelegt hatte, und das immer funktionierte - jetzt aber nicht mehr.
Kann das mit der php Version zu tun haben?
Durchaus. Schalte die Fehleranzeigen ein, dann wirst Du sicherlich Hinweise bekommen:
Code:
        ini_set('display_errors', '1');
        error_reporting(E_ALL);
 
Sorry, ich hab echt dicke Fragezeichen vor der Stirn. Ich bin leider gar nicht in php drin (kommt erst noch).

ich habe hier auch nicht zig Felder wie bei einem Formular. Im Grunde geht es nur um eine einfache Newsletter-Andmeldung. E-Mail eintragen und abschicken und fertig.

Unabhängig von meinem eigentlichen Problem, kommt wohl tatsächlich noch ein serverseitiges php Problem dazu, denn das alte Formular funktioniert auf einem anderen Server problemlos.
 
Hi akdesign,

das von Dir beschriebene Problem lässt sich lösen, wenn Du den Parameter "message" in der Funktion ergänzt.
Das alte Formular funktioniert? Dort wird sicher eine "message" an die Funktion übergeben; sonst würde der Empfänger eine leere Mail erhalten ;)

PHP:
$empfaenger = "a.kessler@kessler-creativdesign.de";
$from = $_POST['email'];
$message = "test";
  
mail($empfaenger, $from, $message);
 
Hi goto,

es kommt gar nichts an, auch keine leere Mail. Ich schau aber gleich nochmal mit message.

Das alte Formular funktioniert nur auf einem anderen Server, nicht dort, wo es derzeit liegt und eigentlich immer funktioniert hatte. Daher meine Vermutung mit der php-Version.

Also nochmal, das sind gerade zwei verschiedene Probleme:
1. die Newsletter-Anmeldung: da kommt gar keine Mail an (siehe mein eigentlicher Post)
2. habe ich dann festgestellt, dass ein altes Formular, das auf meinem Server liegt, und bisher immer ging, jetzt nicht mehr geht, aber auf einem anderen Server funktioniert. Auf meinem Server ist php 5.3.38 - weiß aber nicht, ob da vorher eine ältere Version lief.
Auf dem anderen Server läuft 5.4
 
HI goto;

das ist spannend, Dein Tip hat tatsächlich funktioniert. Gut, dann schreibe ich halt eine Message dazu.

Was ich jetzt nur gesehen habe:
Absender-Adresse ist: www-data@derServerName.com
Ist das normal?

Jetzt muss ich nur noch die eMail Adresse des Absenders in die Mail packen und am besten noch einen Betreff definieren, dann klappt es endlich.

Super herzlichen Dank auf alle Fälle Dir dazu.


Mit dem alten Formular muss ich mal schauen, wo es hängt.
 
Hey,

die Adresse stammt vom default Header.
Du kannst an die Mail noch einen eigenen Header anhängen
(bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string$additional_parameters ]] )

Der Header kann wie folgt aussehen:

PHP:
$header = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

In Deinem Fall würde der Code dann so aussehen:
PHP:
$empfaenger = "a.kessler@kessler-creativdesign.de";
$from = $_POST['email'];
$message = "test";
$header = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
mail($empfaenger, $from, $message,$header);

Ich sehe gerade, der zweite Parameter "$from" ist ungültig. An dieser Position steht der Betreff eq. $subject.

=>
PHP:
$empfaenger = "a.kessler@kessler-creativdesign.de";
$from = $_POST['email'];
$subject = "Betreff";
$message = "Nachricht";
$header = 'From: ' . $from . "\r\n" .
    'Reply-To: ' . $from . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($empfaenger, $subject, $message,$header);


Viele Grüße
 
Zurück