• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Javascript Email Versenden Frage

Ohelert

Schafhirte
Registriert
2 Dezember 2013
Beiträge
131
Diamanten
300
Minecraft
Aurazara
Hallo Liebe Programierer Comunity.
Ich habe ein Problem mit einer E-Mail Kontakt Box:
Code:
var sendEmailDiv = document.getElementById("send-email");

initContactButton();

function initContactButton()
{
    if (deviceName == "computer")
    {
        sendEmailDiv.onclick = function() {sendEmail()};
    }
    else //using touchstart to replace onclick on mobile device since touchevents are used
    {
        sendEmailDiv.addEventListener("touchstart", sendEmail, false);
    }
}

function sendEmail()
{
        hideContactConfirmationContainer(); //function from main.js
        positionContactConfirmationContainer(); //function from main.js
                                   
        var isSubjectFilled;
        var isMessageFilled;
                                 
        var emailAddress = $("#email-address").val();
        var emailSubject = $("#email-subject").val();
        var emailMessage = $("#email-message").val();

        if (!emailAddress.match(/^([a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,4}$)/i))
        {
            focusEmail(); //function from main.js
            setTimeout("showContactConfirmationContainer(0)",200); //function from main.js, setTimeout for ie since its focus is late
        }
        else
        {
            if (emailMessage.length < 1)
            {
                isMessageFilled = false;
                focusMessage(); //function from main.js
            }
           
            if (emailMessage.length >= 1)
            {
                isMessageFilled = true;
            }
           
            if (emailSubject.length < 1)
            {
                isSubjectFilled = false;
                focusSubject(); //function from main.js
            }
           
            if (emailSubject.length >= 1)
            {
                isSubjectFilled = true;
            }
       
            if ((isSubjectFilled == true) && (isMessageFilled == true))
            {
                var datastr ='email-address=' + emailAddress + '&email-subject=' + emailSubject + '&email-message=' + emailMessage;
           
                setTimeout("showContactConfirmationContainer(2)",200); //function from main.js, setTimeout for ie since its focus is late
           
                setTimeout("send('"+datastr+"')",2000);
            }
            else
            {
                setTimeout("showContactConfirmationContainer(1)",200); //function from main.js, setTimeout for ie since its focus is late
            }
        }
       
        return false;
}

function send(datastr){
    $.ajax({   
        type: "POST",
        url: "email.php",
        data: datastr,
        cache: false,
        success: function(html){
       
        hideContactConfirmationContainer(); //function from main.js
        positionContactConfirmationContainer(); //function from main.js
        setTimeout("showContactConfirmationContainer(4)",200); //function from main.js, setTimeout for ie since its focus is late
       
        clearAllInputField(); //function from main.js
    }
    });
}

Meine Frage dabei ist nun, an welche Mailadresse Schikt es das ? bzw wo kann man die ändern :)

vielen Dank und Liebe Grüsse Ohelert
 

Malte

Ehemaliges Teammitglied
Ehem. Teammitglied
Registriert
17 März 2012
Beiträge
524
Diamanten
310
Minecraft
Lergin_
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).
 
Zuletzt bearbeitet:

Ohelert

Schafhirte
Registriert
2 Dezember 2013
Beiträge
131
Diamanten
300
Minecraft
Aurazara
und das wär meine lösung:
Code:
<?php
if($_POST){
    $emailAdress = $_POST['name'];
    $emailSubject = $_POST['email'];
    $emailMessage = $_POST['text'];

//send email
    mail(„blabla.blibla@blub.ch", "51 Deep comment from" .$email, $message);
}
?>
was haltet ihr davon ?
sollte eigentlich funktionieren oder ?
 

Malte

Ehemaliges Teammitglied
Ehem. Teammitglied
Registriert
17 März 2012
Beiträge
524
Diamanten
310
Minecraft
Lergin_
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.

Ich würde sagen du musst

PHP:
if(isset($_POST["email"]))

schreiben.

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:
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:
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:
<?php
if(isset($_POST['emailAdress']) && isset($_POST['emailSubject']) && isset($_POST['emailMessage']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
    $emailAdress = $_POST['emailAdress'];
    $emailSubject = $_POST['$emailSubject'];
    $emailMessage = $_POST['$emailMessage'];

//send email
    mail("blabla.blibla@blub.ch",51 Deep comment from" .$emailAdress, $emailMessage);
}?>
 
Oben