我的PHP表单需要SMTP身份验证吗?

时间:2015-03-31 10:39:48

标签: php forms email smtp

我创建了一个表单并且它没有发送电子邮件。我联系了我的主机,他说我需要SMTP身份验证。表格需要发送预订信息。

这是我的reservation.php文件:

<script>
/////////////////// RESERVATION FORM //////////////////////
        $("#ajax-contact-form").submit(function(){ 
            var str = $(this).serialize();
            document.getElementById('submit').disabled=true;
            document.getElementById('submit').value='PLEASE WAIT';
            $.ajax({ 
                type: "POST",
                url: "apartments_reservation_send.php",
                data: str,
                success: function(msg){ 
                    $("#note").ajaxComplete(function(event, request, settings){ 
                        if(msg == 'OK') 
                        { 
                            result = '<div class="notification_ok">Thank you!<br />Your request is successfully sent!</div>';
                            $("#fields").hide();
                        }
                        else 
                        { 
                            document.getElementById('submit').disabled=false;
                            document.getElementById('submit').value='Send request';
                            result = msg;
                            autoReinitialise: true;
                        } 
                        $(this).html(result);
                    });
                }
            });
            return false;
        });
</script>

<form id="ajax-contact-form" action="javascript:alert('success!');"> 
                            <table width="100%" cellpadding="3" cellspacing="3">
                                <tr>
                                    <td width="50%" align="right" style="text-align: right;">
                                        Arrival Date<span class="REQ">*</span> &rarr; <input id="arrivalDate" name="arrivalDate" size="30" type="text" class="date-pick" /> 
                                    </td>
                                    <td width="50%" align="left" style="text-align: left;">
                                        <input id="departureDate" name="departureDate" size="30" type="text" class="date-pick" />
                                        &larr; <span class="REQ">*</span>Departure Date
                                    </td>
                                </tr>
                                <tr>
                                    <td width="50%" align="right" style="text-align: right;">
                                        Adults<span class="REQ">*</span> &rarr; 
                                        <select id="Adults" name="Adults"> 
                                            <option value=""></option>
                                            <option value="0">0</option>
                                            <option value="1">1</option> 
                                            <option value="2">2</option> 
                                            <option value="3">3</option> 
                                            <option value="4">4</option> 
                                        </select>
                                    </td>
                                    <td width="50%" align="left" style="text-align: left;">
                                        <select id="Children" name="Children"> 
                                            <option value=""></option>
                                            <option value="0">0</option>
                                            <option value="1">1</option> 
                                            <option value="2">2</option> 
                                            <option value="3">3</option> 
                                            <option value="4">4</option> 
                                        </select>
                                        &larr; <span class="REQ">*</span>Children
                                    </td>
                                </tr>
                            </table>
                            <table width="100%" cellpadding="3" cellspacing="3">
                                <tr>
                                    <td width="25%" align="right" valign="middle" style="text-align: right;">Name<span class="REQ">*</span> :</td>
                                    <td width="75%" align="left" style="text-align: left;">
                                        <input type="text" id="name" name="name" value="" size="86" /> 
                                    </td>
                                </tr>
                                <tr>
                                    <td align="right" valign="middle" style="text-align: right;">E-mail<span class="REQ">*</span> :</td>
                                    <td align="left" style="text-align: left;">
                                        <input type="text" id="email" name="email" value="" size="86" /> 
                                    </td>
                                </tr>
                                <tr>
                                    <td align="right" valign="middle" style="text-align: right;">Phone<span class="REQ">*</span> :</td>
                                    <td align="left" style="text-align: left;">
                                        <input type="text" id="phone" name="phone" value="" size="86" /> 
                                    </td>
                                </tr>
                                <tr>
                                    <td align="right" style="text-align: right;">Message :</td>
                                    <td align="left" valign="top" style="text-align: left;">
                                        <textarea id="message" name="message" rows="5" cols="87"></textarea> 
                                    </td>
                                </tr>
                                <tr>
                                    <td width="100%" align="center" style="text-align: center;" colspan="2">
                                        <input class="button" type="submit" name="submit" id="submit" value="Send request" />
                                    </td>
                                </tr>
                            </table>
                        </form>

这是我的reservarion_send.php:

<?php 

$TO_EMAIL   = "info@thebunchofgrapesinn.com";
$FROM_EMAIL = "info@thebunchofgrapesinn.com";
$FROM_NAME  = "thebunchofgrapes.com";
$SUBJECT    = "The Bunch Og Grapes - Apartment Reservation";
error_reporting (E_ALL ^ E_NOTICE);
$post = (!empty($_POST)) ? true : false;

if($post)
{
    include 'functions.php';

    $ARIVAL_DATE        = trim($_POST['arrivalDate']); 
    $DEPARTURE_DATE     = trim($_POST['departureDate']); 
    $ADULTS             = trim($_POST['Adults']); 
    $CHILDREN           = trim($_POST['Children']); 
    $EMAIL              = trim($_POST['email']);
    $PHONE              = trim($_POST['phone']); 
    $NAME               = stripslashes($_POST['name']);
    $MESSAGE            = stripslashes($_POST['message']);

    $ERROR = '';
    if(!$ARIVAL_DATE) 
    {
        $ERROR .= 'Please enter Arrival Date<br />';
    }
    if(!$DEPARTURE_DATE) 
    {
        $ERROR .= 'Please enter Departure Date<br />';
    }
    //if(!$ADULTS) 
    //{
        //$ERROR .= 'Please pick number of Adults<br />';
    //}
    //if(!$CHILDREN) 
    //{
        //$ERROR .= 'Please pick number of Children<br />';
    //}
    if(!$NAME) 
    {
        $ERROR .= 'Please enter Your Name.<br />';
    }
    if(!$EMAIL) 
    {
        $ERROR .= 'Please enter Email address.<br />';
    }
    if($EMAIL && !ValidateEmail($EMAIL)) 
    {
        $ERROR .= 'Please enter valid Email address.<br />';
    }
    if(!$PHONE) 
    {
        $ERROR .= 'Please enter You Phone Number.<br />';
    }
    //if(!$MESSAGE || strlen($MESSAGE) < 15) {
        //$ERROR .= "Molimo unesite poruku. <br />Poruka mora imati najmanje 15 karaktera.<br />";
    //}
    
    $FULL_MESSAGE = "ARIVAL DATE = $ARIVAL_DATE\nDEPARTURE DATE = $DEPARTURE_DATE\nADULTS = $ADULTS\nCHILDREN = $CHILDREN\nNAME = $NAME\nEMAIL = $EMAIL\nPHONE = $PHONE\nMESSAGE = $MESSAGE";
    
    if(!$ERROR)
    {
        $mail = mail($TO_EMAIL, $SUBJECT, $FULL_MESSAGE,
             "From: ".$FROM_NAME." <".$FROM_EMAIL.">\r\n"
            ."Reply-To: ".$FROM_EMAIL."\r\n"
            ."X-Mailer: PHP/" . phpversion());

        if($mail) {
            echo 'OK';
        }
    }
    else {
        echo '<div class="notification_error">'.$ERROR.'</div>';
    }

}
?>

以下是网页http://thebunchofgrapesinn.com/apartments_reservation

的链接

我不确定如何添加SMTP身份验证以及此处有什么问题,有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

php mail()功能的行为因服务器操作系统而异。 Windows没有内置的非SMTP选项,如基于Unix的服务器。如果没有使用标题的高级知识,mail()也会受到限制。

如果在这里推荐工作工具并不合适,PHPMailer是一个方便的goto解决方案,用于从php发送电子邮件。如果您的服务器是基于Unix / Linux的,您可以省略$mail->isSMTP()并且相关选项和PHPMailer将使用服务器的sendmail实现。如果你在Windows上或者有方便的SMTP细节,PHPMailer就足够简单了。

答案 1 :(得分:0)

您可以使用PHPMailerSwiftmailer,这些是用于发送smtp邮件的常用库。 PhpMailer比swift更简单,文档易于理解。

但是你可以为此编写自己的smtp客户端,但首先你需要学习如何在php中建立套接字连接。 PHPMailers smtp clas是创建一个的好提示。

如果您拥有服务器的管理员权限,则可以将sendmail邮件功能连接到smtp服务器here is a documantation how to。尽管我之前从未使用过它,但Php对于smtp有一个mail configuration选项。

顺便说一下,php.ini有一个sendmail_path选项来读取你的STDOUT数据并发送邮件。如果需要,可以使用bash,php或python脚本更改此sendmail_path参数。但我不推荐它。

答案 2 :(得分:0)

大多数主机都已经配置了SMTP。
为了单独调试 mail()功能。只需要创建一个像'mail.php'这样的文件并将下面的代码放入它:

    <?php
         $email   ="PUT EMAIL ID OF USER HERE";      
    
        $subject ="Reservation Info";
    
        $headers = "From: " . '<thebunchofgrapesinn.com/>' . "\r\n";
        $headers .= "Reply-To: ". $email . "\r\n";
        $headers .= "MIME-Version: 1.0\r\n";
        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    
     $message = "<html>
        <body>
          <p>Its Just A Testing Mail</p>
        </body>
        </html>";

    if(mail($email,$subject, $message, $headers)){
      echo 'mail sent';
    }

?>

检查天气是否有效。
也更喜欢使用phpmailer。
Here is the link for downloding PHPmailer class it also has example.