【问题标题】:The code "works", but does not send the email [duplicate]代码“有效”,但不发送电子邮件[重复]
【发布时间】:2020-09-12 14:22:39
【问题描述】:

代码“有效”,因为它会在填写字段时给出正确的消息,但它不会发送电子邮件。这可能是我需要在爸爸结束时设置的东西吗?还是代码错误。我对这一切都很陌生,仍在学习一切是如何运作的。

我正在为我的妻子建立一个网站,而且我很新,我从你管上的一个很棒的视频中获得了这个信息,因为我所参加的课程还没有走到这一步。我仍在使用 CSS 和 Bootstrap。

我将 php 放在根文件夹中的页面上,我已经仔细检查了文件名。 main_parser.php

<?php
if( isset($_POST['n']) && isset($_POST['e']) && isset($_POST['p']) ){
    $n = $_POST['n']; 
    $e = $_POST['e'];
    $p = $_POST['p'];
    $to = "redacted@gmail.com";
    $from = $e;
    $subject = 'Contact Form Message';
    $message = '<b>Name:</b> '.$n.' <br><b>Email:</b> '.$e.' <p>'.$p.'</p>';
    $headers = "From: $from\n";
    $headers .= "MIME-Version: 1.0\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\n";
    if( mail($to, $subject, $message, $headers) ){
        echo "success";
    } else {
        echo "The server failed to send the message. Please try again later.";
    }
}
?>


--------------------------------------------

<script>
  function _(id){ return document.getElementById(id); }
  function submitForm(){
    _("main-submit").disabled = true;
    _("status").innerHTML = 'please wait ...';
    var formdata = new FormData();
    formdata.append( "n", _("n").value );
    formdata.append( "e", _("e").value );
    formdata.append( "p", _("p").value );
    var ajax = new XMLHttpRequest();
    ajax.open( "POST", "main_parser.php" );
    ajax.onreadystatechange = function() {
        if(ajax.readyState == 4 && ajax.status == 200) {
            if(ajax.responseText == "success"){
                _("main-form").innerHTML = '<h2>Thanks '+_("n").value+', your message has been sent.</h2>';
            } else {
                _("status").innerHTML = ajax.responseText;
                _("main-submit").disabled = false;
            }
        }
    }
    ajax.send( formdata );
  }
  </script>


--------------------------------------------------------------------

<form id="main-form" onsubmit="submitForm(); return false;">

        <div class="col-lg-4 space label-adj">
          <label for="" class="form-label">JOIN THE CAMPAIGN TODAY!</label>
        </div>


      <div class="form-row">
        <div class="col-lg-4 space">
          <input id="n" type="text" class="form-control" placeholder="Name" required>
        </div>

      </div>
      <div class="form-row">
        <div class="col-lg-4 space">
          <input id="e" type="email" class="form-control" placeholder="E-Mail Address" required>
        </div>

      </div>
      <div class="form-row">
        <div class="col-lg-4 space">
          <input id="p" type="Phone" class="form-control" placeholder="Phone Number" required>
        </div>

      </div>
      <div class="form-row space">
        <div class="col-lg-4">
          <button id="main-submit" type="submit" class="btn btn-dark btn-block submit-b"><span id="status"></span>Submit</button>

        </div>

      </div>
    </form>

【问题讨论】:

  • 我当然希望你不要只是在这样的公共论坛上发布某人的真实电子邮件地址......
  • @NiettheDarkAbsol 谢谢,我刚刚删除了它
  • @Saino_Moore 是否回显了“成功”信息?它可能会被 Google Mail 的垃圾邮件过滤器阻止,这里有很多事情在起作用。
  • $email 设置在哪里?空的 From 标头可能会引发垃圾邮件过滤器。
  • 我收到成功消息,只是没有电子邮件。我在这里发布后发现 $email 中的错误,抱歉在人们回答之前没有时间更新。你们太棒了。我把它托管在 go-daddy 上,所以它不是本地的。电子邮件地址的垃圾邮件文件夹中也没有显示任何内容。

标签: javascript php html email


【解决方案1】:

您的问题可能出在其他地方,因为...

mail():

如果邮件被成功接收,则返回TRUE,否则返回FALSE

请务必注意,仅仅因为邮件已被接受投递,它确实并不意味着邮件实际上会到达预定目的地。

php.net

【讨论】:

    猜你喜欢
    • 2013-06-22
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多