PHP邮件不发送电子邮件

时间:2014-03-15 17:56:25

标签: php html email

此代码无法为我发送电子邮件有什么问题?

if (isset($_POST['name']) and (isset($_POST['email'])) and (isset($_POST['text']))) {
     $name = $_POST['name'];
     $email = $_POST['email'];
     $text = $_POST['text'];


if (!empty($name) and !empty($email) and !empty($text)) {

$to = 'info@test34.com';
$subject = 'Testing';
$body = $text;
$headers = 'From : test@test.com';

if(mail($to, $subject,$body,$headers)) {
    echo 'Email Has bin sent.';
}
else echo "Can't Send mail";


}


}

我已尝试多次,但代码无效。

HTML是:

<html>
<form action="" method="POST">


Name : <br>
<input type="text" name="name">
<br><br>

Email : <br>
<input type="email" name="email">
<br><br>


Message : <br>
<textarea name="text" rows="6" cols="30"></textarea> 
<Br><br>
<input type="submit" value="Send">
</form>
</html>

我现在该怎么办? 请帮帮我:(

2 个答案:

答案 0 :(得分:3)

经过测试完全按照发布使用)

问题似乎是由From与<{p>}中的:之间的空格引起的

$headers = 'From : test@test.com';
                ^-- right there

经过测试,直到我删除它们之间的空格才收到电子邮件。

我还为添加name="submit"的提交按钮添加了额外的条件语句。

使用以下内容,已成功发送和接收电子邮件。

<?php
if (isset($_POST['submit'])){

if (isset($_POST['name']) && (isset($_POST['email'])) && (isset($_POST['text']))) {
     $name = $_POST['name'];
     $email = $_POST['email'];
     $text = $_POST['text'];

if (!empty($name) && !empty($email) && !empty($text)) {

$to = "info@test34.com";
$subject = 'Testing';
$body = $text;
$headers = 'From: test@test.com';

if(mail($to, $subject,$body,$headers)) {
    echo 'Email has been sent.';
    }
else { echo "Can't Send mail"; }

    }

    }

} // closing brace for if (isset($_POST['submit']))

?>

<html>
<form action="" method="POST">

Name : <br>
<input type="text" name="name">
<br><br>

Email : <br>
<input type="email" name="email">
<br><br>

Message : <br>
<textarea name="text" rows="6" cols="30"></textarea> 
<Br><br>
<input type="submit" name="submit" value="Send">
</form>
</html>

脚注:如果您不希望在用户点击提交后重新显示该表单,则可以使用以下内容:

if(mail($to, $subject,$body,$headers)) {
    echo 'Email has been sent.';
echo "<br>";
echo '<a href="index.php">Click here</a> to return to our Website.';
exit; // this is the command to use in order not to show the form after
}

答案 1 :(得分:1)

试试这个。将and更改为AND

if (isset($_POST['name']) AND (isset($_POST['email'])) AND (isset($_POST['text']))) {
     $name = $_POST['name'];
     $email = $_POST['email'];
     $text = $_POST['text'];


if (!empty($name) AND !empty($email) AND !empty($text)) {

$to = 'info@test34.com';
$subject = 'Testing';
$body = $text;
$headers = 'From : test@test.com';

if(mail($to, $subject,$body,$headers)) {
    echo 'Email Has bin sent.';
}
else echo "Can't Send mail";


}


}
相关问题