我有一个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页面时都会显示此错误:未指定输入文件 有人可以帮我解决问题在哪里吗?
答案 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";
?>
mail( )
函数:http://php.net/manual/en/function.mail.php