0

我的网站上有一个联系我们页面。我想要的是当有人填写表格并点击发送按钮时。消息应该到达我的 gmail。我为它编写了以下代码。它不工作。有没有其他方法我可以做到这一点。

html代码:

<form id="ContactForm" action="contacts.php" method="post">
    <div>
        <div  class="wrapper"> <strong>Name:</strong>
            <div class="bg">
                <input type="text" class="input" name="name">
            </div>
        </div>
        <div  class="wrapper"> <strong>Email:</strong>
            <div class="bg">
                <input type="text" class="input" name="email">
            </div>
        </div>
        <div  class="textarea_box"> <strong>Message:</strong>
            <div class="bg">
                <textarea cols="1" rows="1" name="message"></textarea>
            </div>
        </div>
        <a href="javascript:;" onclick="document.getElementById('ContactForm').submit();" class="button"><span>Send</span></a> <a href="#" class="button"><span>Clear</span></a> </div>
          </form>

php代码

<?php
session_start();
$to = "someemail@gmail.com";
$subject = "Someone Tried to contact you";
$message = $_POST['message'];
$fromemail = $_POST['email'];
$fromname = $_POST['name'];
$lt= '<';
$gt= '>';
$sp= ' ';
$from= 'From:';
$headers = $from.$fromname.$sp.$lt.$fromemail.$gt;
mail($to,$subject,$message,$headers);
echo "mail sent";
exit();
?>
4

3 回答 3

1

首先,您应该检查您的 PHP 注入输入。

$message = stripslashes($_POST['message']);
$fromemail = stripslashes($_POST['email']);
$fromname = stripslashes($_POST['name']);

除此之外,您的邮件脚本似乎没有任何问题。该问题很可能是由您的 PHP 服务器引起的。您的虚拟主机是否确实提供 PHP 邮件?大多数免费网络主机不提供此功能,因为它们通常用于发送垃圾邮件。

于 2013-10-13T21:21:22.323 回答
0

PHP 形式:

<?php

header( 'Content-Type: text/html; charset=utf-8' );

// Your Email
$receiver = 'max.mustermann@domain.tld';


if (isset($_POST['send']))
{






    $name = $_POST['name']

    $email = $_POST['email'];

    if ((strlen( $_POST['subject'] ) < 5) || (strlen( $_POST['message'] ) < 5))
    {
        die( 'Please fill in all fields!' );
    }
    else
    {
        $subject   = $_POST['subject'];
        $message = $_POST['message'];
    }




    $mailheader  = "From: Your Site <noreply@" .$_SERVER['SERVER_NAME']. ">\r\n";
    $mailheader .= "Reply-To: " .$name. "<" .$email. ">\r\n";
    $mailheader .= "Return-Path: noreply@" .$_SERVER['SERVER_NAME']. "\r\n";
    $mailheader .= "MIME-Version: 1.0\r\n";
    $mailheader .= "Content-Type: text/plain; charset=UTF-8\r\n";
    $mailheader .= "Content-Transfer-Encoding: 7bit\r\n";
    $mailheader .= "Message-ID: <" .time(). " noreply@" .$_SERVER['SERVER_NAME']. ">\r\n";
    $mailheader .= "X-Mailer: PHP v" .phpversion(). "\r\n\r\n";


    if (@mail( $receiver, htmlspecialchars( $subject ), $message, $mailheader ))
    {

        echo 'Email send!';
    }
}

?>

HTML 表单:

<form action="mail.php" method="post">
Name: <input type="text" name="name" /><br />
Email: <input type="text" name="email" /><br />
Subject: <input type="text" name="subject" /><br />
Message: <textarea name="message" cols="20" rows="2"></textarea><br />
<input name="send" type="submit" value="Send Email" />
</form>
于 2013-10-13T21:54:50.153 回答
0

抱歉,您的代码很糟糕(尤其是那些串联)。使用Swift 邮件程序,它提供 OOP 样式并为您完成所有标题工作。并确保您已安装任何邮件服务器(您检查是否有任何邮件服务器?)。

于 2013-10-13T21:10:40.000 回答