簡體   English   中英

使用php發送電子郵件

[英]Sending an email using php

給定標准的html格式,例如以下格式;

<form method="post" action=<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>>
                            <div class="row half">
                                <div class="6u"><input type="text" placeholder="Name" name="name" /></div>
                                <div class="6u"><input type="text" placeholder="Email" name="email" /></div>
                            </div>
                            <div class="row half">
                                <div class="12u"><textarea name="message" placeholder="Message" name="message"></textarea></div>
                            </div>
                            <div class="row">
                                <div class="12u">
                                    <ul class="actions">
                                        <li><input type="submit" class="button" value="Send Message" name="submit" /></li>
                                        <li><input type="reset" class="button alt" value="Clear Form" name="clear"/></li>
                                    </ul>
                                </div>
                            </div>
                        </form>

和以下PHP

if(isset($_POST['submit'])){
    $to = "enquiries@appcloudkent.com"; // this is your Email address
    $from = $_POST['email']; // this is the sender's Email address
    $name = $_POST['name'];
    $subject = "Website Enquiry";
    $message = $name . " wrote the following:" . "\n\n" . $_POST['message'];
    $headers = "From:" . $from;
    $headers2 = "From:" . $to;

    if(isValidString($from) && isValidString($name) && isValidString($message)){
        mail($to,$subject,$message,$headers);
    }
}

可以發送電子郵件,但是,這種方法會導致很多問題。 因為我的表單位於頁面的底部,所以單擊“發送”后,頁面將被重定向回,並且焦點將返回頁面的頂部。

提供足夠的用戶反饋以使用戶知道電子郵件已發送的正確方法是什么?是否可以導航回頁面並自動滾動至底部-允許我將發送按鈕更改為綠色?

如果不這樣做,是否有更好的方法來做到這一點?

謝謝

在表單之前添加錨鏈接。 <a id="anchorName"></a>

將您的表格發布到錨點。

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>#anchorName">

您可以使用XMLHttpRequest提交表單,並取消按Submit的默認操作。 jQuery的.post()和event.preventDefault()方法尤其擅長於此。

表單動作應該指向頁面本身(就像您的示例中那樣),因此您可以顯示來自驗證的錯誤消息(就像您沒有那樣)。

如果表單不在頁面頂部,則可以添加錨點:

<h2><a name="theForm">The form</a></h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>#theForm">

如果正確處理了表單(=已發送郵件),則好的做法是重定向到另一個頁面,顯示成功消息。 因此,按F5不會再次提交表單(並發送另一封郵件)。

if (mail($to,$subject,$message,$headers)) {
    // redirect to page showing success message and exit script
} else {
    // redirect to page showing error message and exit script
}

我通常會再次重定向到同一頁面,但是要附加一個參數( $_SERVER["PHP_SELF"].'?mail_success=1' ),然后在模板中決定是否顯示成功消息,錯誤消息或以下形式:

if (isset($_REQUEST['mail_success'])) {
    // show success message
} elseif (isset($_REQUEST['mail_error'])) {
    // show error message, technical issues, try again bla bla
} else {
    // show the form (including validation errors if necessary)
}

暫無
暫無

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

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