簡體   English   中英

直接從表單發送郵件

[英]Sending mail directly from a form

我的網站上有一個“聯系我們”頁面。 我想要的是當某人填寫表格並單擊發送按鈕時。 該郵件應到達我的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();
?>

首先,您應該檢查輸入的PHP注入。

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

除此之外,您的郵件腳本似乎沒有任何問題。 該問題很可能是由您的PHP服務器引起的。 您的虛擬主機肯定提供PHP郵件嗎? 大多數免費的Web主機通常不提供此功能,因為它們經常被用作垃圾郵件。

抱歉,但是您的代碼很糟糕(尤其是那些串聯)。 使用提供OOP樣式並為您完成所有標頭工作的Swift郵件程序 並確保已安裝任何郵件服務器(是否檢查了郵件服務器?)。

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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM