(Noob)-简单的PHP电子邮件表单代码


(Noob) - Simple PHP E-mail form code?

我买了一个引导主题只是为了制作一个简单的网站。它上面有一个联系表格,主题创建者说要确保你的主机让你使用php。我问我的主人,他们说:

"您需要在表单中添加电子邮件身份验证。

在cpanel中创建一个用于表单的电子邮件地址,然后使用用于验证从form。

http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm"

我在cpanel中创建了电子邮件,但不幸的是,我对下一步的了解还不够。我希望有人能帮我编写代码,让这份表格正常工作。

这是完整的email.php代码:

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$subject = "Message";
$body = "From $name, $email,  'n'n$message";
$to = "myemail@gmail.com";
mail($to, $subject, $body);
?>

有什么简单的东西可以添加到其中以验证并使表单工作吗?

更新答案:

您可以将email.php / html代码编辑为以下内容:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Send email example</title>
</head>
<body>
    <form method="post">
        <input type="text" name="sender_email" placeholder="Senders email address">
        <input type="text" name="receiver_email" placeholder="Receivers email address">
        <input type="text" name="subject" placeholder="Subject">
        <textarea name="message" placeholder="Message"></textarea>
        <button type="submit">Send email</button>
    </form>
</body>
</html>
<?php
    require_once('send_email_class.php');
    if(!empty($_POST)){
        $sender_email = $_POST['sender_email'];
        $receiver_email = $_POST['receiver_email'];
        $subject = $_POST['subject'];
        $message = $_POST['message'];
        $send_email = new send_email_class($sender_email, $receiver_email, $subject, $message);
        $send_email_response = $send_email->send_email();
        echo $send_email_response;
    }
?>

并将以下代码作为名为:send_email_class.php的文件上传到您的Web服务器。

<?php
    class send_email_class {
        // Class constructor storing variables
        function __construct($sender, $receiver, $subject, $message){
            $this->receiver = $receiver;
            $this->subject = $subject;
            $this->message = $message;
            $this->header = 'From: ' . $sender . ''r'n';
        }
        // Function to send the email
        function send_email(){
            if(mail($this->receiver, $this->subject, $this->message, $this->headers)){
              return 'Mail sent.';
            }else{
              return 'Unable to send mail.';
            }
        }
    }
?>

当然,您不必从form中输入所有这些信息,您可以存储一些信息,比如在PHP代码中固定的$sender_email变量。

但这取决于你。希望这能有所帮助。


编辑:

请将email.php的内容替换为以下内容:

<?php
    class email{
        // Class constructor storing variables
        function __construct($sender_email, $sender_name, $message){
            $this->sender = $sender_email;
            $this->sender_name = $sender_name;
            $this->message = $message;
            $this->receiver = 'changeme@email.com';
            $this->subject = 'Email from: ' . $sender_name;
            $this->header = 'From: ' . $sender_email . ''r'n';
        }
        // Function to send the email
        function send_email(){
            if(mail($this->receiver, $this->subject, $this->message, $this->header)){
              return 'Thank you ' . $this->sender_name . ' for sending the email containing the following message: ' . $this->message;
            }else{
              return 'Sorry ' . $this->sender_name . ' a error occured, please try again.';
            }
        }
    }
    if(!empty($_POST)){
        $sender_email = $_POST['email'];
        $sender_name = $_POST['name'];
        $message = $_POST['message'];
        $send_email = new email($sender_email, $sender_name, $message);
        $send_email_response = $send_email->send_email();
        echo $send_email_response;
    }
?>

并编辑以下代码行:$this->receiver = 'changeme@email.com';


最终答案:

在收到文件后,修复很容易,ajax一直在处理它自己。

mail.php内容:

<?php
    $receiver = 'xxxxx@gmail.com';
    $subject = 'Email from: ' . $_POST['name'];
    $message = $_POST['message'];
    $header = 'From: ' . $_POST['email'];
    mail($receiver, $subject, $message, $header);
?>