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>

このスクリプトは、2 日間私を困惑させました。メール ID にメールを送信できないバグを見つけることができません

firebug にも警告やエラーが表示されない

どちらの場合も、ライブ サーバーからもローカル 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 にアクセスできない場合は、ウェブホストに連絡して、手動で有効にできるかどうか尋ねてください。

ただし、send-path が設定されていない場合、mail() を機能させるのは非常に難しくなります。このような場合は、SwiftMailerなどのサードパーティのメーラーの使用を検討することをお勧めします。個人的には、php の mail() 関数が有効になっているにもかかわらず、SwiftMailer を使用しています。私の意見では、ヘッダーやその他のことが簡単になります。

失敗した 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
于 2013-01-08T18:23:17.360 に答える
1

まず第一にmail()、電子メールがメールボックスに届いたかどうかをチェックする機能がありません。しかし、あなたのスクリプトは false を返したmail()ため、サーバー側に何かがありました。

  • (ローカル) サーバーでメール サーバーを実行していますか?
  • php はこのメール サーバーに接続できますか (Windows サーバーを実行している場合は、php.ini smtp セクションを参照するか、Linux メール サーバーのエラー ログを参照してください)
  • phpのエラーログを見てください

はい、phpinfo()両方のサーバーで無効になっている機能を確認してください。共有サーバーを使用している場合、メールの送信が許可されないことがあります。ほとんどの場合、ローカル ドメインから別のメール サーバーにメールを送信することはできません。これは、資格のないドメインまたは違法なドメインである可能性があるためです (スパムとしてマークされます)。

最後になりましたが、phpmailer クラスをダウンロードします。これははるかに使いやすく、メールヘッダーについてあまり心配する必要はありません。

于 2013-01-08T18:43:33.383 に答える
0

これは、PHPでメールを送信するための関数です。

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

tosubjectおよびmessageはすべて必須パラメーターです。あなたは主題を逃しています。

headersおよびparametersはオプションです

mail()関数の使用方法の詳細については、 http: //php.net/manual/en/function.mail.phpを参照してください。

于 2013-01-08T18:21:41.420 に答える