发送电子邮件php时没有指定输入文件

时间:2013-09-15 06:18:39

标签: php email

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

我有一个html页面,其中包含电子邮件详细信息:

    <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页面时都会显示此错误:未指定输入文件 有人可以帮我解决问题在哪里吗?

1 个答案:

答案 0 :(得分:1)

要首先检查并验证PHP是否正在运行并且可用于当前的Web托管公司,请创建一个名为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>

N.B。:我确实需要指出您的PHP邮件处理程序不包含一些必需的元素。

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

$mail_email= $_POST['mail_email'];

标题也不存在。邮件需要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";
?>