javascript - 用PHP的mail(),返回成功,但邮箱并未收到?
天蓬老师
天蓬老师 2017-04-11 13:02:53
[JavaScript讨论组]

环境:xammp;Mercury 用的25端口;

PHP:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>boot</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="css/bootstrap.css">
    <script src="js/jquery.js"></script>
    <style>
        .contact-form{
            border: 1px solid #c0c0c0;
            margin-top: 30px;
            border-radius: 10px;
            box-shadow: 3px 3px 16px #c0c0c0;
        }
        .head{
            height: 85px;
        }
        .head p{
            font-size: 40px;
            line-height: 85px;
        }
        .alert p{
            font-style: italic;
        }
    </style>
</head>

<body>
<p class="container-fluid">
    <p class="row">
        <p class="col-sm-offset-1 col-sm-10 contact-form">
            <p class="head">
                <p>Contact Us</p>
            </p>
            <?php
            function _post($str){ 
               $val = !empty($_POST[$str]) ? $_POST[$str] : null; 
               return $val; 
            } 
            $name=_post("name");
            $email=_post("email");
            $message=_post("message");
            $errors='';
            $missing_name ='<p>Please enter your name!</>';
            $missing_email ='<p>Please enter your Email!</>';
            $invalid_email ='<p>Please enter your <strong>Valid</strong> Email!</>';
            $missing_message ='<p>Please enter your Messages!</>';
            if (_post("submit")){
                if (!$name){
                    $errors.=$missing_name;
                }else{
                    $name=filter_var($name, FILTER_SANITIZE_STRING);
                }
                if (!$email){
                    $errors.=$missing_email;
                }else{
                    $email=filter_var($email, FILTER_SANITIZE_EMAIL);
                    if (!filter_var($email, FILTER_VALIDATE_EMAIL)){
                        $errors.=$invalid_email;
                    }
                }
                if (!$message){
                    $errors.=$missing_message;
                }else {
                    $message=filter_var($message, FILTER_SANITIZE_STRING);
                }
                if ($errors){
                    $resultMessage='<p class="alert alert-danger">'.$errors.'</p>';
                }else{
                    $to = "eric.choo1997@gmail.com";
                    $subject ="Contact";
                    $message ="
                    <p>Name: $name</p>
                    <p>Email: $email</p>
                    <p>Messages:</p>
                    <p><strong>$message</strong></p>
                    ";
                    $headers = "Content-type:text/html";
                    if (mail($to, $subject, $message, $headers)){
                        $resultMessage='<p class="alert alert-success">Thanks For Your Message.</p>';
                    }else{
                        $resultMessage='<p class="alert alert-warning">Web Error.</p>';
                    }
                }
                echo $resultMessage;
            }
            ?>
            <form method="post">
                <p class="form-group">
                    <label for="name">Name:</label>
                    <input type="text" name="name" id="name" placeholder="Name" class="form-control" value="<?php echo _post("name"); ?>">
                </p>
                <p class="form-group">
                    <label for="email">Email</label>
                    <input type="email" name="email" id="email" placeholder="Email" class="form-control" value="<?php echo _post("email"); ?>">
                </p>
                <p class="form-group">
                    <label for="name">Message:</label>
                    <textarea name="message" id="message" class="form-control" rows="5"><?php echo _post("message"); ?></textarea>
                </p>
                <p class="form-group">
                    <input type="submit" name="submit" id="submit" class="btn btn-success btn-lg" value="Send Message">
                </p>
            </form>
        </p>
    </p>
</p>
    <script src="js/bootstrap.js"></script>
</body>
 
</html>

PHP.ini:

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP=localhost
; http://php.net/smtp-port
smtp_port=25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = eric.choo1997@yahoo.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =

Mercury的Do not permit 已经取消勾选;
试了三五个邮箱了,始终不可以。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(4)
阿神

php自带的mail函数不怎么样,也建议你看一下mail()函数的缺点,
只要能够连接到指定的SMTP服务器mail()函数就会返回真值.但是这并不意味着邮件成功的到达了接收方那里.mail()函数不会等待或报告SMTP服务器发来的成功/错误代码.
常用phpmailer swiftmailer

天蓬老师

PHP自带的mail函数,好像不好用,很难试成功,你可以试一下PHP邮件插件来发送邮件,例如:swiftmailer-master这个插件。

高洛峰

php mail函数只是封装了一层壳,它是接收参数后将信息传递给smtp server,而你本地没有smtp server的情况下邮件不会发送到具体的邮箱。

返回true是因为mail函数表示信息接受邮件信息并传递。但是不能表示它一定会发送到你的邮箱。

所以如果你需要发送邮件可以找一下phpmailer库。

ringa_lee

直接使用phpmailer邮件类吧

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号