邮件功能不发送电子邮件

时间:2014-12-23 17:45:48

标签: php email

我是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>";
    ?>

非常感谢任何帮助。

1 个答案:

答案 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."; 
}

一旦邮件熄灭,它就会从服务器的手中移出并进入接收端。事后你无能为力。“