【问题标题】:No input file specified when sending email php发送电子邮件php时未指定输入文件
【发布时间】:2013-09-19 12:12:36
【问题描述】:

更新:没有任何 php 文件正在运行。有没有办法解决这个问题?

我有一个包含电子邮件详细信息的页面:

    <form method="POST" sourceindex="44" action="semail.php" name="form1" onSubmit="return validate_form ( );">
        <p>
          <label>Your name:<br>
            <input sourceindex="47" name="mail_name" class="text_field" type="text">
          </label>
        </p>
        <p>
          <label>Your e-mail:<br>
            <input sourceindex="51" name="mail_email" 
class="text_field" type="text">
          </label>
        </p>
        <p>
          <label>Message:<br>
            <textarea sourceindex="55" name="mail_msg" cols="45" 
rows="5" class="text_area"></textarea>
          </label>
        </p>
        <input name="B1" type="submit" class="form_button" value="" />
      </form>

这里是php代码(全部在semail.php中):

     <?php
$mail_to ="someEmail@hotmail.com";
$mail_subject = "Message From a Customer";
$mail_body ="Name of the Coustomer: ".$_POST['mail_name']."\n";
$mail_body .= "E-Mail Of the Coustomer: ".$_POST['mail_email']."\n";
$mail_body .= "The Message: ".$_POST['mail_msg']."\n";
if(mail($mail_to, $mail_subject, $mail_body))
echo "Thanks for your Message";
else 
echo "Failed to send the e-mail"
 ?>

每当我点击发送 semail.php 页面时都会显示此错误:未指定输入文件 有人可以帮我找出问题所在吗?

【问题讨论】:

  • 你能加一个吗?在 echo "Failed to send the e-mail" 结尾,看看是否有效
  • 可能是重复的? stackoverflow.com/questions/14555996/no-input-file-specified> 即使编码不同,问题也是一样的。
  • Satya:已经在那里了。 mathielo:我试过了,但没用。任何其他建议可能是什么错误?
  • @Satya,在关闭?&gt; 之前的最后一条指令不需要;。分号的实际使用是为了区分不同的指令,所以如果你没有更多的指令并关闭php的标签,你不会有问题。不过,我更喜欢始终使用它们,即使是简短的指令,例如 &lt;?php echo "Something!"; ?&gt;
  • 表单中的发送邮件按钮在哪里?验证 semail.php 的路径是否正确

标签: php email


【解决方案1】:

要首先检查并验证当前 Web 托管公司是否正在运行 PHP,请创建一个名为 check_server.php 的文件并插入以下代码:

<?php

// Show all information, defaults to INFO_ALL
phpinfo();

// Show just the module information.
// phpinfo(8) yields identical results.
phpinfo(INFO_MODULES);

?>

如果成功,您将看到您的服务器信息和配置。它还将显示mail 的路径。

关于您的表单代码:

我的回答可能会或可能不会解决可能的托管公司问题,但是您的代码中有一些错误会导致不成功。

请阅读以下内容:

在使用以下表格时,成功发送和接收消息。

<form method="POST" sourceindex="44" action="semail.php" name="form1">
<p>
<label>Your name:<br>
<input sourceindex="47" name="mail_name" class="text_field" type="text">
</label>
</p>
<p>
<label>Your e-mail:<br>
<input sourceindex="51" name="mail_email" 
class="text_field" type="text">
</label>
</p>
<p>
<label>Message:<br>
<textarea sourceindex="55" name="mail_msg" cols="45" 
rows="5" class="text_area"></textarea>
</label>
</p>
<input name="B1" type="submit" class="form_button" value="Submit" />
</form>

注意:我确实需要指出您的 PHP 邮件处理程序没有包含一些必需的元素。

例如,处理程序中不存在的 From: 元素/变量。

$mail_email= $_POST['mail_email'];

标题也不存在。 Mail 需要 4 个变量来发送/接收电子邮件。

例如你有if(mail($mail_to, $mail_subject, $mail_body))

应该读作if(mail($mail_to, $mail_subject, $mail_body, $headers))

由于缺少Email from,省略标头会导致邮件被标记为垃圾邮件,并将显示为unknown sender

结合上面的表格,我包括一个 PHP 邮件处理程序的工作副本:

<?php
$mail_to ="someEmail@hotmail.com";
$mail_email= $_POST['mail_email'];
$mail_subject = "Message From a Customer";

$mail_body ="Name of the Customer: ".$_POST['mail_name']."\n";
$mail_body .= "E-Mail Of the Coustomer: ".$_POST['mail_email']."\n";
$mail_body .= "The Message: ".$_POST['mail_msg']."\n";

$headers = "From: $mail_email \r\n";
$headers .= "Reply-To: $mail_email \r\n";

if(mail($mail_to, $mail_subject, $mail_body, $headers))

echo "Thanks for your Message";
else 
echo "Failed to send the e-mail";
?>

【讨论】:

    猜你喜欢
    • 2013-04-04
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2017-11-21
    • 1970-01-01
    • 2014-07-20
    • 2011-09-16
    相关资源
    最近更新 更多