Email send mit php und ajax

meste

Erfahrenes Mitglied
Hallo allerseits!

Ich hätte da ein Problem und hoffe das ihr mir da weiter helfen könnt da meine php-Kenntnisse nicht so ausgeprägt ist wie .NET.
Aufbau der Seite ist wie folgt.
In der Index.html wird eine andere html (Impressum.html) mittels jQuery geladen.
Code:
        $("div#divContainer").load(site2Load);
in der gealdenen Seite habe ich ganz einfache "input tyoe='text'" und Span-Elemente.
Als Senden-Button verwende ich ein "a href" Link.
Code:
<a href="#" onclick="return SenMsg();" id="btnSendMsg" title="Nachricht senden"> S e n d e n </a>

Die Funktion welcher aufgerufen wird um die Nachricht zu senden.
Code:
    var data = "&vn=" + $("[id*='txtVN']").val() + "&nn=" + $("[id*='txtNN']").val() + "&hp=" + $("[id*='txtHP']").val() +
            "&betreff=" + $("[id*='txtSubject']").val() + "&text=" + $("[id*='txtMsg']").val() + "&empf=xxx" + "&email=" + $("[id*='txtMail']").val();

    jQuery.ajax({
        type: "POST",
        url: "mail_de.php4",
        data: data,
        success: function () {
            alert("Ihre Nachricht wurde erfolgreich versendet");
            clearInputs();
        }, error: function (msg) {
            alert(msg.error);
        }
    });

Und hier die php Datei (gleich vorweg, hatte im Netz was gefunden und angepasst)
Code:
<?
// Text für die Bestätigungsmail
$vtext="Ihre Mail ist sicher bei $empf angekommen. Sie werden in den nächsten Tage eine Antwort erhalten.";

// Betreff der Bestätigungsmail
$bestaetigung="Nachricht angekommen";

$text=str_replace("\\\"","\"",$text);
$text=str_replace("\'","'",$text);
urlencode ($text);
$text=str_replace("%0D","\n",$text);

// e-Mail wird abgeschickt und zur Bestätigung wird noch eine Mail an den Absender geschickt
mail($empf,$betreff,"$vn $nn\n$hp\n\n\n\n $text","From: ".$email);
mail($email,$bestaetigung,$vtext,"From: ".$empf);
?>

Leider wird die Nachricht nicht versenden und bekomme in der Error-function von ajax auch keine aussagekräftige Meldungen.
Wäre jedenfalls sehr dankbar wenn mir jemand weiter helfen könnte.

Danke und Gruß
m.e.s.t.e
 
Hallo,

von wo aus willst du die Mail versenden? Von lokalem Rechner zu Hause? Hast du schon geprüft, ob short_open_tags in der php.ini auf true steht, denn du verwendest "<?" statt "<?php". Schreib doch auch mal in die ersten Zeilen deines Scripts folgendes

PHP:
<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);

Frohe Ostern
 
Falls du mit xampp testest: Da musst du zusätzlich was konfigurieren, damit Mails ankommen. Die Mails werden als plaintext in den ordner mailoutput verschoben...
 
@saftmeister
Danke vorerst für deine Tipps jedoch hat das leider nicht so geklappt.
Getestet wird das ganze online, ist zwar mühsam uploaden aber das geht schon.
short_open_tags in der php.ini auf true steht
Wo finde ich diese ini Datei****?

Und die ersten drei Zeilen habe übernommen aber trotzdem bekomme ich undefined als Msg zurück.
Code:
        error: function (msg) {
            alert(msg.d);
            alert(msg.val);
            alert(msg.error);
        }


@alxy
Nein, ich verwende VS2012 da es mittlerweile (endlich) einen JavaScript-Debugger und mehrere Vorteile beim Entwickeln von HTML-Seiten, nter anderem jQuery-Framework.



Könnte es vielleicht damit zu tun haben das die Impressum in die Index geladen wirt und dadruch da was schief läuft?
Kann leider nicht so einfach die Impressum aufrufen da einige Sachen Dyn. sind. Daher die Frage, falls es doch damit haben könnte dann muss ichd as wohl oder übel machen müssen was wiederum bisserl meh Zeit ...

Danke und Lg
 
@saftmeister
Danke vorerst für deine Tipps jedoch hat das leider nicht so geklappt.
Getestet wird das ganze online, ist zwar mühsam uploaden aber das geht schon.

Wo finde ich diese ini Datei****?

Am einfachsten wäre es, wenn du ein PHP-Script schreibst, in dem folgende Zeile steht:

PHP:
<?php
phpinfo();

Das Script rufst du im Browser auf und suchst dann auf der Seite nach short_open_tag. Steht da wie z.B. bei mir "Off" bedeutet das, dass du immer mit <?php statt mit <? arbeiten musst. Sonst wird das nicht als PHP-Code erkannt.

Die php.ini liegt ansonsten dort, wo phpinfo() dir das mitteilt. Steht bei "Loaded Configuration File" auf der phpinfo() Seite.
 
1.) XAMPP ist keine IDE sondern lediglich ein Apache/PHP/MySQL-Stack zum lokalen Testen.
2.) Bei einem Webspace-Paket hast du normalerweise keinen Zugriff auf Konfigurationsdateien. Man kann aber meistens einfach entsprechend eine php.ini erstellen und die auf den Webspace ziehen. Natürlich kann man nicht alle Konfigurationsdaten ändern, aber vieles sollte gehen.
 
Man kann auch mit ini_set() arbeiten. Da brauchst du dann keine php.ini hochladen. Das gibt einem auch die Möglichkeit, Konfiguration über Datenbank zu erledigen.
 
@ alxy
Danke füt die Info jeodhc werde ich die Def Config belassen.
Den Aufgrund unzureichende Kenntnisse mit Apache und php würde ich das nicht machen.
Leider unterstützt men Provide kein IIS sonst wäre es ein klax.

@staftmeister
short_open_tag = ON
Für "Local Value" und "Master Value"

Hier erneut die php Datei.
Code:
<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);

$vtext="Ihre Mail ist sicher bei $empf angekommen. Sie werden in den nächsten Tage eine Antwort erhalten.";

$bestaetigung="Nachricht angekommen";

$message=str_replace("\\\"","\"",$message);
$message=str_replace("\'","'",$message);
urlencode ($message);
$message=str_replace("%0D","\n",$message);

mail($empf,$subject,"$vn $nn\n$hp\n\n\n\n $message","From: ".$email);
mail($email,$bestaetigung,$vtext,"From: ".$empf);
?>

Ist schwer heraus zu finden woran das liegen könnte wenn keine aussagekräftige Msg ausgegeben wird.

Danke und Lg
 
Hast du schon mal versucht, das Script mit den Parametern über GET aufzurufen? Ich sehe in deinem Script auch keinen Zugriff über die Superglobale $_GET. Ist bei dir register_globals auf On? Findst du auch in der phpinfo()-Seite.
 
Hallo,
register_globals = OFF
das mit GET im Form-Tag werde ich mal probieren jedoch denke ich das es nicht damit zu tun hat.

Was ich noch wissen möchte ist, ob das Script für das Senden von einer Mail ausreichend ist oder ob man noch dazu was benötigt?

Danke und Lg
 
Zurück