php邮件没有发送到电子邮件

时间:2013-01-08 18:11:07

标签: email php

 <!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”echo语句..

3 个答案:

答案 0 :(得分: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()工作将会困难得多。如果是这种情况,您可能需要考虑使用第三方邮件程序,例如SwiftMailer。就个人而言,我使用SwiftMailer,即使启用了php的mail()函数 。在我看来,它使标题和其他内容更容易。

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

在这种情况下,运行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

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:0)

这是用PHP发送邮件的功能:

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

tosubjectmessage都是必需的参数。你错过了一个主题。

headersparameters是可选的

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