【发布时间】:2012-01-07 19:22:43
【问题描述】:
我在 PHP 中创建联系表单时遇到了无穷无尽的麻烦。
我首先尝试了写入数据的方法(如这里的问题中所述:HTML Form Not Outputting To CSV File (Or Displaying Correct Error Messages)),现在我只是尝试将信息通过电子邮件发送给自己的方法。
这是我的 jsfiddle:
这是我编写的用于将信息发送给自己的 PHP(我知道这不是很优雅的编码,但我只想先让一些东西工作,然后我打算使用数组等):
<?php
if (isset($_POST['brandname']) && isset($_POST['firstname']) && isset($_POST['lastname']) && isset($_POST['email']) && isset($_POST['website'])){
$brandname = $_POST['brandname'];
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$website = $_POST['website'];
if(!empty($brandname) && !empty($firstname) && !empty($lastname) && !empty($email)){
$to = 'myemail@example.com';
$subject = 'Submission Form';
$body = $firstname;
$headers = 'From: '.$email;
if (@mail($to, $subject, $body, $headers)){
echo 'Yeah yeah';
}else{
echo 'yeah no.';
}
}else{
echo 'Please fill out all required fields.';
}
}
?>
我在这个例子中使用的电子邮件显然不是我的电子邮件(我在我的代码中使用了我的真实电子邮件)。基本上发生的事情是我填写表格并点击提交,它会重新加载 form.php 页面。我检查了我的电子邮件,但没有收到任何邮件。如果我检查该网站的源代码,“是啊是啊”。显示在代码中(当它成功发送电子邮件时,它会从那里回显)。所以代码似乎运行正常,但没有输出任何东西。
我是否必须通过本地主机设置一些邮件服务器/功能?
我错过了什么?
【问题讨论】:
-
如果您在本地工作(例如使用 XAMPP),您需要在
php.ini中设置 sendmail 的路径才能发送电子邮件。这可能会有所帮助:codingforums.com/archive/index.php/t-77553.html -
你能把错误和警告打开,或者检查你的日志吗?
-
我的php.ini已经有:[邮件功能];仅适用于 Win32。 SMTP = 本地主机 smtp_port = 25 。这是我应该看的那条线吗?
-
我需要查看哪些警告?就看起来而言,代码运行正常,因为所有内容都重新加载并发送了成功的回显。我应该从哪里开始调试?
-
@MxmastaMills 好吧,我明白了...我可以解决您的问题,因为 Linux 和 Mac OS 是基于 UNIX 的。我找到的最佳解决方案:安装 PostFix。这似乎很有希望,并且与我所做的非常相似:hints.macworld.com/article.php?story=20081217161612647 - 也许我的问题也会对您有所帮助:askubuntu.com/questions/88117/… - 祝你好运!