我是PHP的新手,并且掌握了(非常简单的)联系表单。当我将此上传到我的托管公司时,PHP脚本确实运行,因为当我填写并提交表单时它会带回我的确认但电子邮件不会发送。我的托管公司是123-reg。我是否必须对它们执行任何操作以允许发送电子邮件?
我的代码如下:
表格代码:
<form action="action_handler.php" method="POST">
<dl>
<dt> Name:
<dd><input type="text" name="name">
<dt> Email Address:
<dd><input type="text" name="mail">
<dt> Comments:
<dd><textarea rows="5" cols "20" name="comment">
</textarea>
</dl>
<p><input type="submit"></p>
</form>
PHP代码:
<?php
$name = $_POST['name'];
$mail = $_POST['mail'];
$comment = $_POST['comment'];
$to = "someone@hotmail.co.uk";
$subject = "Contact Form Request";
$body = "You have a new message from: /n Name: $name /n Email: $mail /n/nThe request is as follows: /n/n $comment";
mail ($to,$subject,$body);
echo"<p>Thanks for your comment $name ...</p>";
echo"<p><i>$comment</i></p>";
echo"<p>We will reply to $mail</p>";
?>
非常感谢任何帮助。
答案 0 :(得分:1)
您目前的代码存在一些问题。
首先,/n
应该显示为\n
非常重要。这是语法错误。
然后,丢失的From:
在邮件标题中没有,很可能会被拒绝或发送到垃圾邮件。
邮件中的“from”最终会成为“@ yourserver.xxx”的电子邮件地址
要包含From:
,请使用以下内容:
$header = "From: ". $name . " <" . $mail . ">\r\n";
将在“来自”中显示为此人的姓名,但已标识为正确的电子邮件地址。
除了标题中省略From:
之外,邮件通常会被发送到垃圾邮件。
因此
mail ($to,$subject,$body);
应修改为
mail ($to,$subject,$body,$header);
包括上面的行,插入$body
变量下面。
有关邮件/标题的更多信息,请访问:
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告应仅在暂存时完成,而不是生产。
您还可以使用条件语句来检查邮件是否确实已发送:
if(mail ($to,$subject,$body,$header)) {
echo "Sent.";
} else{
echo "Sorry, check your mail logs.";
}
一旦邮件熄灭,它就会从服务器的手中移出并进入接收端。事后你无能为力。“