【问题标题】:PHP mail function is not sending any messages [duplicate]PHP邮件功能不发送任何消息[重复]
【发布时间】:2013-12-15 07:03:08
【问题描述】:

我对问题所在感到困惑,我在使用mail php 函数时没有收到任何电子邮件。

PHP

<?php
if (isset($_POST['ch_but_logon'])) {
    $txt .= $_POST['named23'];   
    mail("email@email.com","test",$txt);
}

?>

HTML

<form action="mailer.php" method="post">
  <input type="text" name="named23" size="12">
</form>
</td>
</tr>
<tr>
  <td colspan="2" nowrap valign="top">
    <input type="checkbox" name="CHK_NOCACHE" value="on">
  </td>
</tr>
<tr>
  <td colspan="2">
    <div>
      <input type="submit" name="ch_but_logon" value="Entrer">

@@@@UPDATE@@@@

更新代码:索引

<form action="mailer.php" method="post">
  <input type="text" name="named23" size="12">
  </td>
  </tr>
  <tr>
    <td colspan="2" nowrap valign="top">
      <input type="checkbox" name="CHK_NOCACHE" value="on">
    </td>
  </tr>
  <tr>
    <td colspan="2">
      <div>
        <input type="submit" name="ch_but_logon" value="Entrer">
</form>

MAILER.PHP

<?php
if (isset($_POST['ch_but_logon'])) {
    $txt = $_POST['named23'];   
    mail("psadsaxu@yahoo.sds","test",$txt);
}

?>

但现在又不是发送电子邮件了。没有收到任何东西。

【问题讨论】:

  • 你好像没有在最后关闭你的&lt;form&gt;标签?
  • 您刚刚发布了另一个问题,您在其中写道您正在收到电子邮件,但正文为空。它是哪一个? stackoverflow.com/questions/20591758/…
  • Bakmar,在正文为空之前,因为代码在用户进入网站时立即发送电子邮件,但现在我在你的帮助下修改了,我不再收到电子邮件了
  • 我不确定您是否在测试服务器上,但我建议您下载SMTP4Dev,它将复制一个实时 SMTP 服务器。
  • 服务器工作正常,测试了另一个电子邮件发件人,它工作正常。

标签: php html email


【解决方案1】:

您需要在代码末尾关闭 &lt;/form&gt;,因为所有输入都应包含在表单中,特别是用于在 PHP 中验证的 &lt;input type="submit" name="ch_but_logon" value="Entrer"&gt; if (isset($_POST['ch_but_logon'])) {

并且你需要在“等于”符号之前删除“点”,因为之前没有创建 $txt,并且这个 concat 操作是不必要的:

$txt = $_POST['named23'];

【讨论】:

  • 更新代码:索引&lt;form action="mailer.php" method="post"&gt; &lt;input type="text" name="named23" size="12"&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" nowrap valign="top"&gt; &lt;input type="checkbox" name="CHK_NOCACHE" value="on"&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2"&gt; &lt;div&gt; &lt;input type="submit" name="ch_but_logon" value="Entrer"&gt; &lt;/form&gt; MAILER.PHP &lt;?php if (isset($_POST['ch_but_logon'])) { $txt = $_POST['named23']; mail("psadsaxu@yahoo.sds","test",$txt); } ?&gt; 但现在又不是发送电子邮件了。没有收到任何东西。
  • 请更新您原来的问题!
  • 问题已更新,谢谢。
【解决方案2】:

您的 HTML 无效。表单外不能有&lt;td&gt;&lt;tr&gt;,但表单内不能有&lt;/tr&gt;&lt;/td&gt;。这些标签必须正确嵌套。当您没有正确嵌套时,浏览器会将所有必要的结束标签添加到内部标签中。这样做的结果是您的表单在 named23 元素之后结束,并且复选框和提交按钮不是表单的一部分。

您应该将整个表格放在&lt;form&gt;...&lt;/form&gt; 标签内。

【讨论】:

  • 刚做了,还是一样,没有收到任何东西。
  • 您确认脚本正在运行吗?如果给它添加var_dump($_POST);,它会显示什么?你检查过你的邮件日志吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-13
  • 2021-05-10
  • 2020-06-03
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
相关资源
最近更新 更多