0

我有一个用户填写的网络表单,我的目标是发送一封通知电子邮件,告知已提出票证。我有 2 个单独的 php 页面,一个名为 index.php 的页面托管表单和 sendEmail.php,其中包含电子邮件详细信息。

如果我在 index.php 中包含 sendEmail.php 它可以工作,但是我发现每次刷新页面时都会发送电子邮件,所以我一直在尝试修改代码以仅在用户单击“提交”时运行

  <?php
  if(isset($_POST["submit"])){
         $to  = 'email1@domain.com';
         $subject = 'test subject';
         $message = 'test message';
         $headers  = 'Cc: email2@Sdomain.com';
         mail($to,$subject,$message,$headers);
       }
       else
       {
         echo 'Error';
       }
  ?>

使用上面的代码没有任何反应,我没有收到错误,也没有收到电子邮件。我的按钮有一个输入类型和名称都称为“提交”

编辑:下面的 HTML 表单...

    <div id="NewTicket" class="tabcontent">
        <form id="newForm" action="">
            <p style='font-weight: bold'>Which area do you want to raise?
            <select id='businessDropdown'; name='businessDropdown'; onchange='businessChanged(this.value)'; style='background-color: #ffff99; margin-left: 15px';>
            <option value="">- Select business -</option>
    <?
    if (isset($business)) {
        if ($business=="PSM") {
            echo "<option value='PSM' selected>PSM</option>\n";
            echo "<option value='CMS'>CMS</option>\n";
        } else {
            echo "<option value='PSM'>PSM</option>\n";
            echo "<option value='CMS' selected>CMS</option>\n";

        }
    } else {
        echo "<option value='PSM'>PSM</option>\n";
        echo "<option value='CMS'>CMS</option>\n";
    }
    ?>
    </select>
    </p>

    <p style='font-weight: bold'>Filter by a particular model?
    <select style='min-width: 50%; max-width: 90%; background-color: #ffff99; margin-left: 50px' id='modelDropdown' name='modelDropdown' onchange='modelChanged(this.value)'>
    <option value="">- Select business first -</option>
    </select>
    </p>


    <p style='font-weight: bold'>What board do you want to look at?
    <select style='min-width: 50%; max-width: 90%; background-color: #ffff99' id='boardDropdown' name='boardDropdown' onchange='boardChanged(this.value)'>
    <option value="">- Select business first -</option>
    </select>
    </p>
    <p>
    <input id='showAllBoardsCheckbox' type='checkbox' onclick='toggleShowAllBoards()'><label for="showAllBoardsCheckbox">Show all boards</label>
    </p>
    <p style='font-weight: bold'>What side do you want to see?
    <select id='sideDropdown' name='sideDropdown' onchange='sideChanged(this.value)' style='background-color: #ffff99; margin-left: 35px';>
    <option value="">- Select board first -</option>
    </select>
    </p>

    <p style='font-weight: bold'>Which revision do you want to use?
    <select id='revisionDropdown' name='revisionDropdown' onchange='revisionChanged(this.value)' style='background-color: #ffff99';>
    <option value="">- Select board first -</option>
    </select>
    </p>

    <div id='lineDropdownContainer' name='lineDropdownContainer'>
    <p style='font-weight: bold'>Which line are they running down<br>or where have they been built?
    <select id='lineDropdown' name='lineDropdown'  onchange='lineChanged(this.value)' style='background-color: #ffff99; margin-left: 32px';>
    <option value="">- Select board first -</option>
    </select>
    </p>
    </div>


    <label for="Category"><b>Category:</b></label>
        <select id="categoryDropdown" name="categoryDropdown" style='background-color: #ffff99; margin-left: 175px';>
        </select><BR>
<script>
  function validateCategory() {
    var x = document.forms["newForm"]["categoryDropdown"].value;
    if (x == "") {
      alert("A Category must be provided");
      return false;
    }
  }
</script>

    <label for="Reason"><b>Reason for Change/Action:</b></label>
        <select id="reasonDropdown" name="reasonDropdown" style='background-color: #ffff99; margin-left: 57px';>
        </select><BR>
<script>
  function validateReason() {
    var x = document.forms["newForm"]["reasonDropdown"].value;
    if (x == "") {
      alert("A Reason must be provided");
      return false;
    }
  }
</script>

    <label for="problem"><b>Problem Description:</b></label><br>
    <textarea id="problemdesc" name="problemdescript" style='background-color: #ffff99'; cols="100" rows="4" style="resize:none" placeholder="Please provide as much information as possible..."></textarea><br>

<script>
  function validateDescription() {
    var x = document.forms["newForm"]["problemdescript"].value;
    if (x == "") {
      alert("A description of the problem must be provided");
      return false;
    }
  }
</script>

    <div>
        <label><strong>Add Attachment</strong>(optional)</label><br /> <input type="file"
            name="attachmentFile" id="attachmentFile"
            class="InputBox">
    </div><br>

    <label for="Status1"><b>Status:</b></label>
        <select id="statusDropdown1" name="statusDropdown" style='background-color: #ffff99';>
        </select>
<script>
  function validateStatus() {
    var x = document.forms["newForm"]["statusDropdown"].value;
    if (x == "") {
      alert("A status must be provided");
      return false;
    }
  }
</script>

    <label for="requiredaction"><b>Action Required?</b></label>
        <select id="requiredaction" name="requireaction" style='background-color: #ffff99';>
          <option value="Yes">Yes</option>
          <option value="No">No</option>
        </select>

    <label for="SubmittedBy"><b>Submitted By:</b></label>
    <input type="text" id="SubmittedBy" name="SubmittedBy"  style='background-color: #ffff99'; value = "<?php echo $_SESSION['smtRequestForAction']['user_name'];?>" readonly>

    <label for="DateSubmitted"><b>Date Submitted:</b></label>
    <input input type="date" id="DateSubmitted" name="DateSubmitted" style='background-color: #ffff99'; value="<?php echo date('Y-m-d');?>" readonly><br>

    <input type="submit" value="Submit" name="submit" onclick="validateCategory();validateReason();validateDescription();validateStatus();sendEmail()";>
4

1 回答 1

0

好的,所以我设法通过使用 Javascript 函数来解决它,我的 sendEmail.php 被修改为以下...

<?php
       $to  = 'email1@domain.com';
       $subject = 'test subject';
       $message = 'test message';
       $headers  = 'Cc: email2@domain.com';
       mail($to,$subject,$message,$headers);
?>

在 index.php 中,我使用了以下函数...

<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
function sendMail() {
  $.get("sendEmail.php");
  return false;
}
</script>

我在 onclick 选项中添加了 sendMail() 函数,现在刷新时电子邮件不会发送,只有当用户填写表单并提交时才会发送。希望这可以帮助某人。

于 2019-06-05T09:59:13.120 回答