MickeA.com skrev:
Vad innebär "går inte att skicka"? Får du några felmeddelanden? Var tar det stopp?
Du borde hur som helst byta till funktionen nl2br(). Sen borde du nog köra:
$body = <<<EOT
{$text}
EOT;
Alltså { och } runt ditt variabelnamn.
Jag kör ett formulär, ajax och php (Jquery är igång också).
Allt ser ut så här...
Formulär:
<div id="response"></div>
<form id="formail" action="" method ="post">
<input type="text" value="Ditt namn" class="formtext" name="name" id="name" />
<input type="text" value="Din epostadress" class="formtext" name="mail" id="mail" />
<input type="text" value="Ämne" class="formtext" name="subject" id="subject" />
<textarea class="formtext" rows="8" cols="50" name="text" id="text">Meddelande</textarea><br />
<div style="background: #000; position: relative; top: -1px; text-align: right; padding: 0 2px 2px 0">
<input type="image" src="img/send.gif" class="submit" alt="Submit" id="sendmail" name="sendmail" />
</div>
</form>
Ajax:
$(document).ready(function(){
$("#sendmail").click(function(){
var valid = '';
var isr = ' måste fyllas i.';
var name = $("#name").val();
var mail = $("#mail").val();
var subject = $("#subject").val();
var text = $("#text").val();
if (name.length<1) {
valid += '<br />Name'+isr;
}
if (!mail.match(/^([a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,4}$)/i)) {
valid += '<br />Epostadress'+isr;
}
if (subject.length<1) {
valid += '<br />Ämne'+isr;
}
if (text.length<1) {
valid += '<br />Text'+isr;
}
if (valid!='') {
$("#response").fadeIn("slow");
$("#response").html("Error:"+valid);
}
else {
var datastr ='name=' + name + '&mail=' + mail + '&subject=' + subject + '&text=' + text;
$("#response").css("display", "block");
$("#response").html("Skickar meddelande... ");
$("#response").fadeIn("slow");
setTimeout("send('"+datastr+"')",2000);
}
return false;
});
});
function send(datastr){
$.ajax({
type: "POST",
url: "global/mail.php",
data: datastr,
cache: false,
success: function(html){
$("#response").fadeIn("slow");
$("#response").html(html);
setTimeout('$("#response").fadeOut("slow")',2000);
}
});
}
Php-filen:
<?
$mail = $_POST['mail'];
$name = $_POST['name'];
$subject2 = $_POST['subject'];
$text = nl2br($_POST['text']);
$to = "min@mail.com";
$from = $mail;
$subject = "Meddelande från Lajka: " .$subject2;
//begin of HTML message
$message = <<<EOF
<html>
<body bgcolor="#DCEEFC">
{$text}
</body>
</html>
EOF;
//end of message
$headers = "From: $from\r\n";
$headers .= "Content-type: text/html\r\n";
if(mail($to, $subject, $message, $headers)){
echo "Meddelandet skickat!";
}
else{
echo "Någonting gick fel";
}
?>
Vad som händer är att om jag bara skriver en rad i <textarea> så kommer först:
Meddelandet skickas...
Sedan:
Meddelandet skickat!
Och meddelandet har skickats, det dyker upp i inkorgen.
Men så fort jag har radbryt fastnar den på "Meddelandet skickas..."