2
 <!DOCTYPE html>

<html>

<head>

    <link href="aadab.css" rel="stylesheet" type="text/css">
    <link rel="icon" href="images/favicon.png">

</head>

<body>

<h2>REGISTRATION FORM</h2>

<div id="form">

<?php

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

        $name= $_POST['name'];
        $phone= $_POST['phone'];
        $email= $_POST['email'];
        $college= $_POST['namecolg'];
        $team= $_POST['team'];
        $im= $_POST['im'];
        $detail= $_POST['detail'];
        $subject= 'Registration for aadab 2013';

        if ( (empty($name)) || (empty($phone)) || (empty($email)) || (empty($college)) || (empty($detail)) )
            {
                echo '<p id="fillall">It is necessary that you fill at least the required fields that are marked with a star</p>';
            }
        else
            {
                $to= 'xyz@gmail.com';
                $con= "<b>Registration Details:</b><br>"."Name: $name<br>"."Contact: $phone<br>"."Email: $email<br>"."College: $college<br>"."Team(if any): $team<br>"."Instant message: $im<br>"."Details of the event(s): $detail<br>";

                $emsg= "Registration Details:\n\n"."Name: $name\n"."Contact: $phone\n"."Email: $email\n"."College: $college\n"."Team(if any): $team\n"."Instant message: $im\n"."Details of the event(s): $detail\n";   

                $msg = wordwrap($emsg,70);

                $mailsend= mail($to, $subject, $msg);

                if ($mailsend)
                {
                    echo "<div class=\"regdet\"><b>Here is what you've submitted:</b><br><br>$con";
                    echo '<br>Congratulations! You have successfully registered! Click <a href="index.html">here</a> to continue.</div>';
                }
                else
                {
                    echo '<div class="regdet"><br>OOPS! Something went wrong. Click <a href="form.php">here</a> to try again.</div>';
                }
            }
    }
else
    {?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" autocomplete="on" method="post">

    <table>


        <tr>
            <th><label for="name">Your fullname*</label></th>
            <td><input type="text" id="name" name="name" value="<?php echo $name; ?>" required></td>
        </tr>

        <tr>
            <th><label for="phone">Your contact number*</label></th>
            <td><input type="tel" id="phone" name="phone" value="<?php echo $phone; ?>" required></td>
        </tr>

        <tr>
            <th><label for="email">Your email-id*</label></th>
            <td><input type="email" id="email" name="email" value="<?php echo $email; ?>" required></td>
        </tr>

        <tr>
            <th><label for="namecolg">Name of your college*</label></th>
            <td><input type="text" id="namecolg" name="namecolg" value="<?php echo $college; ?>" required></td>
        </tr>

        <tr>
            <th><label for="team">The name of your team<br>(if registering for a team event)</label></th>
            <td><input type="text" id="team" name="team" value="<?php echo $team; ?>" ></td>
        </tr>

        <tr>
            <th><label for="im">Bbm pin/iMessage id/Whatsapp<br>(if any, separate each id by a comma)</label></th>
            <td><input type="text" id="im" name="im" value="<?php echo $im; ?>" ></td>
        </tr>

        <tr>
            <th><label for="detail">Details of the event(s) you want to register for*</label></th>
            <td><input type="text" id="detail" name="detail" value="<?php echo $detail; ?>" required></td>
        </tr>

        <tr><td colspan="2" style="text-align: center; padding: 40px 0px 0px 0px;"><input type="submit" name="submit" value="Register"></td</tr>

    </table>


</form>

<?php } ?>

</div>


</body>

</html>

这段剧本让我困惑了两天!我找不到不允许我向我的电子邮件 ID 发送电子邮件的错误

firebug 也没有显示任何警告或错误我检查了 phpcodechecker.com 是否有可能的语法错误,但没有出现

在这两种情况下,我都无法从实时服务器和本地 zend 服务器接收邮件,我得到“else”回显语句..

4

3 回答 3

2

如果您知道您服务器上已设置允许邮件,请尝试发送测试电子邮件以确保您的变量不会产生错误。做这样的事情:

$test = mail('your@email.com', 'Test Email', 'Hope this works!');
if ( $test ) { echo 'Yay it worked!'; }
else { echo 'Oh no mail failed!'; }

如果您不知道邮件已设置并启用,请执行以下操作:首先,运行phpinfo();并查看 php.ini 文件的路径。接下来,查找表示disabled_functions并查看它是否包含单词的行mail。如果是这样,只需mail从该行中删除关键字,它就会启用 mail() 函数。如果您无法访问您的 php.ini,您可能希望联系您的虚拟主机并询问他们是否可以为您手动启用它。

但是,如果没有设置发送路径,那么让 mail() 工作将变得更加困难。如果是这种情况,您可能需要考虑使用 3rd 方邮件程序,例如SwiftMailer。就我个人而言,即使为我启用了 php 的 mail() 功能,我也使用SwiftMailer。在我看来,它使标题和其他事情变得更容易。

基于失败的邮件()功能更新:

在这种情况下,运行phpinfo();并查看第 6 行。应该说Configuration File (php.ini) Path。然后使用提供的路径来显示 php.ini 文件的内容,方法是:

echo str_replace("\n", '<br />', file_get_contents('/PATH_TO_CONFIG/php.ini'));

现在,只需将 PATH_TO_CONFIG 替换为phpinfo()函数提供的路径。或者,您可以依靠该php_ini_loaded_file()函数返回路径并以这种方式检索它。所以你也可以这样做:

echo str_replace("\n", '<br />', file_get_contents(php_ini_loaded_file()));

然后,搜索文档disabled_functions并查看是否mail在其中。如果没有,我猜你的服务器上没有设置发送路径。

WIN64 更新:尝试将其放入您的配置中:

[mail function]
SMTP = mail.yourdomain.com
sendmail_from = admin@yourdomain.com
于 2013-01-08T18:23:17.360 回答
1

首先mail()功能无法检查电子邮件是否到达邮箱。但是你的脚本返回了一个错误,mail()所以它在服务器端。

  • 您的(本地)服务器上是否有运行邮件服务器?
  • php 可以连接到这个邮件服务器吗(如果您正在运行 Windows 服务器,请参阅 php.ini smtp 部分或查看您的 linux 邮件服务器的错误日志)?
  • 看看php的错误日志

是的,看看phpinfo()两台服务器上的禁用功能。有时,如果您在共享服务器上,则不允许您发送邮件。很可能您无法将邮件从本地域发送到另一个邮件服务器,因为这可能是不合格或非法的域(将被标记为垃圾邮件)

最后但并非最不重要的一点是,下载一个phpmailer 类,它更易于使用,您不必担心邮件标题

于 2013-01-08T18:43:33.383 回答
0

这是在 PHP 中发送邮件的函数:

mail(to,subject,message,headers,parameters)

to,subject并且message都是必需的参数。你错过了一个主题。

headers并且parameters是可选的

有关如何使用该mail()功能的更多详细信息,请参阅: http: //php.net/manual/en/function.mail.php

于 2013-01-08T18:21:41.420 回答