Javascript Email Versenden Frage

Dieses Thema im Forum "Programmierung" wurde erstellt von Ohelert, 5. November 2014.

  1. Ohelert
    Offline

    Ohelert

    Registriert seit:
    2. Dezember 2013
    Beiträge:
    138
    Minecraft:
    Aurazara
    Hallo Liebe Programierer Comunity.
    Ich habe ein Problem mit einer E-Mail Kontakt Box:
    Code (Text):
    1. var sendEmailDiv = document.getElementById("send-email");
    2.  
    3. initContactButton();
    4.  
    5. function initContactButton()
    6. {
    7.     if (deviceName == "computer")
    8.     {
    9.         sendEmailDiv.onclick = function() {sendEmail()};
    10.     }
    11.     else //using touchstart to replace onclick on mobile device since touchevents are used
    12.     {
    13.         sendEmailDiv.addEventListener("touchstart", sendEmail, false);
    14.     }
    15. }
    16.  
    17. function sendEmail()
    18. {
    19.         hideContactConfirmationContainer(); //function from main.js
    20.         positionContactConfirmationContainer(); //function from main.js
    21.                                    
    22.         var isSubjectFilled;
    23.         var isMessageFilled;
    24.                                  
    25.         var emailAddress = $("#email-address").val();
    26.         var emailSubject = $("#email-subject").val();
    27.         var emailMessage = $("#email-message").val();
    28.  
    29.         if (!emailAddress.match(/^([a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,4}$)/i))
    30.         {
    31.             focusEmail(); //function from main.js
    32.             setTimeout("showContactConfirmationContainer(0)",200); //function from main.js, setTimeout for ie since its focus is late
    33.         }
    34.         else
    35.         {
    36.             if (emailMessage.length < 1)
    37.             {
    38.                 isMessageFilled = false;
    39.                 focusMessage(); //function from main.js
    40.             }
    41.            
    42.             if (emailMessage.length >= 1)
    43.             {
    44.                 isMessageFilled = true;
    45.             }
    46.            
    47.             if (emailSubject.length < 1)
    48.             {
    49.                 isSubjectFilled = false;
    50.                 focusSubject(); //function from main.js
    51.             }
    52.            
    53.             if (emailSubject.length >= 1)
    54.             {
    55.                 isSubjectFilled = true;
    56.             }
    57.        
    58.             if ((isSubjectFilled == true) && (isMessageFilled == true))
    59.             {
    60.                 var datastr ='email-address=' + emailAddress + '&email-subject=' + emailSubject + '&email-message=' + emailMessage;
    61.            
    62.                 setTimeout("showContactConfirmationContainer(2)",200); //function from main.js, setTimeout for ie since its focus is late
    63.            
    64.                 setTimeout("send('"+datastr+"')",2000);
    65.             }
    66.             else
    67.             {
    68.                 setTimeout("showContactConfirmationContainer(1)",200); //function from main.js, setTimeout for ie since its focus is late
    69.             }
    70.         }
    71.        
    72.         return false;
    73. }
    74.  
    75. function send(datastr){
    76.     $.ajax({  
    77.         type: "POST",
    78.         url: "email.php",
    79.         data: datastr,
    80.         cache: false,
    81.         success: function(html){
    82.        
    83.         hideContactConfirmationContainer(); //function from main.js
    84.         positionContactConfirmationContainer(); //function from main.js
    85.         setTimeout("showContactConfirmationContainer(4)",200); //function from main.js, setTimeout for ie since its focus is late
    86.        
    87.         clearAllInputField(); //function from main.js
    88.     }
    89.     });
    90. }
    Meine Frage dabei ist nun, an welche Mailadresse Schikt es das ? bzw wo kann man die ändern :)

    vielen Dank und Liebe Grüsse Ohelert
     
    #1
  2. Malte
    Offline

    Malte Moderator Redakteur

    Registriert seit:
    17. März 2012
    Beiträge:
    474
    Ort:
    Schwammbaumwald
    Minecraft:
    Malte662
    Wenn ich das ganze richtig verstehe wird die E-Mail nicht mit JavaScript selbst versendet, sondern die Informationen über die E-Mail mithilfe von Ajax an ein Php-Script (email.php) übergeben, welches die E-Mail dann versendet. Die E-Mail-Adresse an die die Email gesendet wird solltest du also in der entsprechenden PHP Datei finden (sollte im selben Ordner wie die Datei mit der Kontaktbox liegen und email.php heißen).
     
    #2
  3. Drago
    Offline

    Drago

    Registriert seit:
    2. April 2013
    Beiträge:
    83
    Ort:
    #LetsSee
    Ja genau so müsste das sein, allerdings ist es dann doch sinnvoller das ganze nur über php zu machen, denn alles was das script bewirkt kann man über HTML5 machen bzw. dann mit javascript. HTML5 unterstützt die Erkennung von Zeichen in input's. Um zu überprüfen, ob eine Email Adresse angegeben wurde müsstest du nur dem input type="email" zuweisen, desweiteren noch required="" um es zu einem Pflicht Pfeld zu machen, alles andere Übernimmt PhP, wie du das machst findet man sicherlich im Internet.
     
    #3
  4. Ohelert
    Offline

    Ohelert

    Registriert seit:
    2. Dezember 2013
    Beiträge:
    138
    Minecraft:
    Aurazara
    vielen dank :) werd mich mal dransetzen und so nen Php code machen... könnt euch ja schon mal auf weitere fragen gefasst machen :3 :D
     
    #4
  5. Ohelert
    Offline

    Ohelert

    Registriert seit:
    2. Dezember 2013
    Beiträge:
    138
    Minecraft:
    Aurazara
    und das wär meine lösung:
    Code (Text):
    1. <?php
    2. if($_POST){
    3.     $emailAdress = $_POST['name'];
    4.     $emailSubject = $_POST['email'];
    5.     $emailMessage = $_POST['text'];
    6.  
    7. //send email
    8.     mail(„blabla.blibla@blub.ch", "51 Deep comment from" .$email, $message);
    9. }
    10. ?>
    was haltet ihr davon ?
    sollte eigentlich funktionieren oder ?
     
    #5
  6. Drago
    Offline

    Drago

    Registriert seit:
    2. April 2013
    Beiträge:
    83
    Ort:
    #LetsSee
    Ich würde sagen du musst

    PHP:
    1. if(isset($_POST["email"]))
    schreiben.
     
    #6
  7. Malte
    Offline

    Malte Moderator Redakteur

    Registriert seit:
    17. März 2012
    Beiträge:
    474
    Ort:
    Schwammbaumwald
    Minecraft:
    Malte662
    So, wenn das der gesamte Code ist, benutzt du die Variablen $email und $message obwohl diese nicht vorhanden sind. Du müsstest stattdessen die Variablen $emailAdress und $emailMessage (vorausgesetzt das ist das was du da eintragen willst) nutzen.
    Wenn du den Javascript-Code von oben nutzt um die Daten an das PHP-Script zu übergeben müsstest du anstatt von "$_POST['name']" "$_POST['emailAdress']" nutzen, da die Daten sonst nicht in dem PHP-Script ankommen. Außerdem nutzt du bei der Email-Adresse in der Mail-Funktion am Anfang ein Anführungszeichen („) welches so nicht funktioniert, stattdessen müsstest du " nutzen.

    Dies ist nicht zwingend notwendig, da du mit der aktuelle Variante zwar nur überprüfst ob überhaupt etwas via POST übergeben wurde, dieses aber theoretisch reicht (man könnte es auch ganz weg lassen, allerdings währen die Variablen dann ungenutzt).
    Allerdings empfiehlt es sich dennoch zu überprüfen ob die Variablen, die benötigt werden auch alle Vorhanden sind:
    PHP:
    1. if(isset($_POST['name']) && isset($_POST['email']) && isset($_POST['text'])){
    Ansonsten würde ich dir einfach noch empfehlen zu überprüfen ob auch wirklich eine E-Mail Adresse angegeben wurde (gibt true oder false zurück):
    PHP:
    1. filter_var($emailAdress, FILTER_VALIDATE_EMAIL)
    Den gesamten Code würde ich also wie folgt aufbauen (es fehlt noch die Verwendung von dem Titel der Email ($emailSubject)):

    PHP:
    1. <?php
    2. if(isset($_POST['emailAdress']) && isset($_POST['emailSubject']) && isset($_POST['emailMessage']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
    3.     $emailAdress = $_POST['emailAdress'];
    4.     $emailSubject = $_POST['$emailSubject'];
    5.     $emailMessage = $_POST['$emailMessage'];
    6.  
    7. //send email
    8.     mail("blabla.blibla@blub.ch",51 Deep comment from" .$emailAdress, $emailMessage);
    9. }?>
    10.  
     
    #7
    Ohelert gefällt das.
  8. Drago
    Offline

    Drago

    Registriert seit:
    2. April 2013
    Beiträge:
    83
    Ort:
    #LetsSee
    Das ganze habe ich schon Beschrieben und hätte es via HTML gemacht:

     
    #8
    Ohelert gefällt das.