PHP联系表,不接收电子邮件

时间:2015-10-03 12:33:23

标签: php xampp contact-form

所以,在这里,我们用愚蠢的问题编号来计算太多了!

我使用来自互联网的教程创建了一个非常简单的PHP联系表单(我仍然需要添加安全措施,但我想先让它工作)当我点击我网站上的发送按钮时,我确实得到了消息已发送脚本但是我的收件箱中没有收到任何电子邮件。

任何想法我做错了什么?该网站目前通过XAMPP在本地托管。

$name = $_POST['name'];
$company = $_POST['company'];
$email = $_POST['email'];
$tel = $_POST['tel'];
$message = $_POST['message'];
$from = 'From: me@mywebsite.co.uk';
$to = 'me@mywebsite.co.uk';
$subject = 'Enquiry';

$body = "From: $name\n Company: $company\n Email: $email\n Telephone: $tel\n Message: $message\n";

if ($_POST['send']) {
    if(mail($to, $subject, $body, $from)) {
        echo '<p> Your message has been sent!</p>';
    } else {
        echo '<p>Message could not be sent.<br>Please check that you have completed the name, email and message fields and try again</p>';
    }
}

2 个答案:

答案 0 :(得分:1)

好的:

步骤1:检查错误日志,查看未发送邮件的任何问题。通常在Windows内部安装Apache时,大多数人都会跳过设置来自服务器和凭据的信息。

我使用了WAMP,并且只能使用外部帐户正常工作。

第2步:如果有任何失败。

下载邮件程序库并使用Gmail发送电子邮件。这是一个关于它的教程:http://phpmailer.worxware.com/?pg=examplebgmail

效果很好。当然,phpmailer中有很多文件,但是当新的软件版本发布时它很容易升级。

答案 1 :(得分:0)

当我以前设置联系表单时,我一直在使用Code Igniter,我没有意识到在没有安装邮件服务器的情况下我无法使用mail()。

感谢Parris Varney和RiggsFolly指出这一点,再次感谢Riggs让我知道Code Igniter使用PHPMailer库。

通过使用PHPmailer,我能够纠正代码并使表单在很短的时间内完美运行。

对于任何感兴趣的人,最新版本的PHPmailer使用的新代码是:

$name = $_REQUEST['name'];
$co = $_REQUEST['company'];
$email = $_REQUEST['email'];
$tel = $_REQUEST['tel'];
$message = $_REQUEST['message'];

require("PHPMailerAutoLoad.php");

$mail = new PHPMailer();

$mail->isSMTP();

$mail->Host = "mail.mydomain.co.uk";
$mail->SMTPAuth = true;
$mail->Username = "me@mydomain.co.uk";
$mail->Password = "password";
$mail->SMTPAutoTLS = false;

$mail->From = $email;
$mail->addAddress("me@mydomain.co.uk", "Me");
$mail->WordWrap = 50;
$mail->isHTML(true);
$mail->Subject = "Enquiry";

$mail->Body = "From: $name<br>Company: $co<br>Email: $email<br>Telephone: $tel<br>Message: $message";
$mail->AltBody = "From: $name Company: $co Email: $email Telephone: $tel Message: $message";

if(!$mail->Send())
{
    echo "Message could not be sent";
}
echo "Message has been sent";
?>