我真的很新,需要帮助......我有一个论坛,我想发送,但由于某种原因它不发送。 mailto功能不是在服务器上发送电子邮件,也不是刷新redirect.html。这是我的代码:
<?php
$problem = FALSE;
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (empty($_POST['name'])) {
$problem = TRUE;
print '<p class="important">• What is your name?</p>';
}
if (empty($_POST['email'])) {
$problem =TRUE;
print '<p class="important">• What is your email?</p>';
}
if (empty($_POST['message'])) {
$problem =TRUE;
print '<p class="important">• What is your message?</p>';
}
if ($problem = TRUE) {print '<br />';}
}
?>
<form action="index.php" id="contact_me" method="post">
<table border="0" cellspacing="0" cellpadding="0" width="500">
<tr>
<td width="160">Your Name:<span class="important">*</span></td>
<td width="340"><input name="name" type="text" size="30" value="<?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (isset($_POST['name'])) { print htmlspecialchars($_POST['name']); }}?>"/>
</td>
</tr>
<tr>
<td><p>Your Email:<span class="important">*</span></p>
</td>
<td><input name="email" type="text" size="30" placeholder="example@example.com" value="<?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (isset($_POST['email'])) { print htmlspecialchars($_POST['email']); }}?>"/></td>
</tr>
<tr>
<td>Message:<span class="important">*</span></td>
<td><textarea name="message" rows="6" cols="40" placeholder="Your message here"><?php if($_SERVER['REQUEST_METHOD']=='POST'){if(isset($_POST['message'])){print htmlspecialchars($_POST['message']);}}?></textarea></td>
</tr>
</table><br />
<input type="submit" name="submit" id="submit" value="Submit" >
</form>
<?php
// Start the email function
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if ($problem == FALSE) { // holy cow they didn't mess up
$name=$_REQUEST['name'];
$email=$_REQUEST['email'];
$message=$_REQUEST['message'];
$from="From: $name<$email>\r\nReturn-path: $email";
$subject="Mathew Blair - Contact form";
mail("mathewblair@live.com", $subject, $message, $from);
Header("Location: redirect.html");
}
}
?>
感谢您的帮助!
答案 0 :(得分:2)
关于你的最后一个条件
if ($problem = TRUE) {print '<br />';}
您不是在检查problem
是否为true
,而是您设置problem
到TRUE
将其更改为:
if ($problem == TRUE) {print '<br />';}
答案 1 :(得分:0)
您所在的服务器需要安装sendmail或postfix等邮件服务。
在Ubuntu上,那是
sudo apt-get install sendmail
或
sudo apt-get install postfix
您可能需要在php.ini(http://php.net/manual/en/mail.configuration.php)中更改邮件配置。
另外,为了发送电子邮件,我发现最好使用完整的类而不仅仅是邮件功能。这样的类可以更容易地连接第三方邮件网关,例如gmail。因此,您将能够通过gmail的SMTP服务器从您的Web应用程序发送电子邮件,这样可以更好地将您发送的电子邮件检测为垃圾邮件。这是三个很好的包。我推荐swiftmailer。
https://github.com/Synchro/PHPMailer
答案 2 :(得分:0)
您需要配置SMTP才能使mail
正常工作。
由于配置错误,mail
功能也可能出现故障。您必须编辑php.ini文件。