【问题标题】:php mail() function not working, been stuck for hours [duplicate]php mail()函数不起作用,卡了几个小时[重复]
【发布时间】:2019-10-04 05:32:29
【问题描述】:

我似乎无法调试它,因为这是我第一次使用 php。我最初有这个设置并且它确实有效,但我尝试添加更多单选按钮并且它停止工作。我把单选按钮拿出来试图回到第一格,但现在我什至无法发送简单的表格。我已经盯着它看了好几个小时,你能帮我找出问题所在吗?谢谢!

<?php
if($_POST["submit"]) {

    $recipient="testing@yahoo.com";
    $subject="Business Sign-Up Request";
    $senderName = $_POST["senderName"];
    $businessName = $_POST["businessName"];
    $phone = $_POST["phone"];
    $senderEmail = $_POST["senderEmail"];
    $website = $_POST["website"];
    $businessLicense = $_POST["businessLicense"];

    $mailbody = "Contact Name: $senderName\n\nBusiness Name: $businessName\n\nEmail: $senderEmail\n\nPhone: $phone\n\nBusiness License: $businessLicense\n\nWebsite: $website";

    mail($recipient, $subject, $mailbody);
    $thankYou="<p>Thank you! Your message has been sent.</p>";
}
?>

这是 php 代码下方的 HTML 表单...

<?=$thankYou ?>
<div id="TestModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="container">
                <div class="row">
                    <div class="col-12 float-right">
                        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                    </div>
                </div>
                <div class="row">
                    <div class="offset-2 col-8 text-center">
                        <h4 class="businessSignUp-title" id="myModalLabel">Business Sign-Up</h4>
                    </div>
                </div>
                <div class="row">
                    <div class="offset-1 col-10 text-center">
                        <h3>Please submit your information and we will contact you shortly!</h3>
                    </div>
                </div>
                <div class="row text-center"> 
                    <div class="col-12 text-center modal-body">
                        <form method="post" action="home.php" class="text-center">
                            <div>
                                <input class="w-100 py-1 px-2 businessSignUp-input mt-2" required name="senderName" placeholder="Name">
                            </div>
                            <div>
                                <input class="w-100 py-1 px-2 businessSignUp-input mt-2" required name="businessName" placeholder="Business Name">
                            </div>
                            <div>
                                <input class="w-100 py-1 px-2 businessSignUp-input mt-2" required name="phone" placeholder="Phone">
                            </div>
                            <div>
                                <input class="w-100 py-1 px-2 businessSignUp-input mt-2" required name="senderEmail" placeholder="Email Address">
                            </div>
                            <div>
                                <input class="w-100 py-1 px-2 businessSignUp-input mt-2" name="businessLicense" placeholder="Business License (optional)">
                            </div>
                            <div>
                                <input class="w-100 py-1 px-2 businessSignUp-input mt-2" name="website" placeholder="Website (optional)">
                            </div>
                            <input class="btn btn-primary mt-4" type="submit" name="submit">
                        </form>
                    </div>
                </div> 
            </div>
        </div>
    </div>
</div>

【问题讨论】:

标签: php html email


【解决方案1】:

首先尝试使用硬编码值运行代码,以查看邮件是否正常工作,即只有 php 部分而不是 html

<?php
    $recipient="testing@yahoo.com";
    $subject="Business Sign-Up Request";
    $mailbody="test message";
    var_dump(mail($recipient, $subject, $mailbody));
    // echo mail($recipient, $subject, $mailbody);
?>

【讨论】:

  • 我这样做并提交表单以调用该方法,但仍然没有。我还注意到感谢消息也没有弹出,所以我觉得它甚至没有到达 mail() 函数
  • @josephT 希望您现在可以调试和修复它。如果没有,我会在这里提供帮助。请投票或接受答案
  • 我刚刚检查了我服务器中的 error_log 并看到了这个:[04-Oct-2019 05:12:00 UTC] PHP Parse error: syntax error, unexpected '$recipient' (T_VARIABLE) in /第 4 行的 home/buddyjan/public_html/home.php
  • 好的,所以最奇怪的事情发生了。我摆脱了表单中的 action="home.php" 并且它起作用了!我立即收到了电子邮件,但我不明白这有什么不同。是因为它一直在重新加载页面,所以它没有读取实际的方法吗?这太奇怪了,因为我之前在那里有过它并且它正在工作,所以我不确定它为什么停止工作。
  • 但是现在,每次我重新加载页面时,它都会发送相同的表单,而我什至没有输入值。
【解决方案2】:

是的@Kamil007 是对的,您需要主机并且主机必须能够发送电子邮件

使用以下代码检查邮件功能是否成功

var_dump(mail($recipient, $subject, $mailbody));

【讨论】:

  • 这一切都是在线完成的,而不是在我的本地主机上。我之前有它工作过,那是令人沮丧的部分。让我试试那行代码!谢谢
  • 我刚刚做了,但我怎么知道它是否成功?我仍然没有收到电子邮件。
  • @josephT 打印出来的是真假
  • 在 DOM 上?没有打印任何内容。我还注意到点击提交按钮后我的页面正在刷新。我知道 会使页面刷新,但如果我将其更改为按钮,它会破坏我的代码。我想也许是因为它令人耳目一新,我在 DOM 上看不到任何东西
  • 尝试先用硬编码值运行代码,看看邮件是否正常工作,即只有 php 部分不是 html
猜你喜欢
  • 2015-04-16
  • 2011-09-18
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
  • 2017-11-09
  • 2015-02-01
  • 2011-08-15
相关资源
最近更新 更多