我正在从数据库生成一页信息。我需要发送一封包含页面内容的电子邮件作为提醒。 (这里的示例将输入作为消息) 它接收一个电子邮件地址,并且应该将详细信息发送到该地址。
<div class="container">
<?php
$name = $_GET['info'];
if(isset($name)){
$info = explode('|', $name);
/*****************************************************
open conection to the mySQL database
******************************************************/
....
/*****************************************************
Populate the page
******************************************************/
$sql="Select information from table";
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result))
{
/*Title*/
echo '<h1>'.$row['post_title'].'</h1><hr>';
/*content*/
echo '<h2>Details: </h2><br>'.$row['post_content'].'<br>';
$content = $row['post_title'];
/*Reminder*/
echo '<div data-role="collapsible">
<h1>Send a reminder</h1>';
include("includes/email_reminder.php");
echo'</div>';
}
/*****************************************************
Close connection
******************************************************/
mysqli_close($con);
} else {
echo'Nothing selected. Go back <br>
<a href="#" data-rel="back"> <img src="img/icon/Back.png" style="height: 3em" > </a>';
}
?>
</div>
这会在页面底部创建一个表单,以接收需要提醒的电子邮件。 这是email_reminder.php:
<?php
function spamcheck($field)
{
// Sanitize e-mail address
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
// Validate e-mail address
if(filter_var($field, FILTER_VALIDATE_EMAIL))
{
return TRUE;
}
else
{
return FALSE;
}
}
?>
<?php
// display form if user has not clicked submit
if (!isset($_POST["submit"]))
{
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
Your Email: <input type="text" name="to"><br>
Subject: <input type="text" name="subject"><br>
Message: <textarea rows="10" cols="40" name="message"></textarea><br>
<input type="submit" name="submit" value="Submit Feedback">
</form>
<?php
}
else // the user has submitted the form
{
// Check if the "from" input field is filled out
if (isset($_POST["to"]))
{
// Check if "from" email address is valid
$receivecheck = spamcheck($_POST["to"]);
if ($receivecheck==FALSE)
{
echo "Invalid input";
}
else
{
$to = $_POST["to"]; //receiver
$subject = $_POST["subject"];
$message = $_POST["message"];
// message lines should not exceed 70 characters (PHP rule), so wrap it
$message = wordwrap($message, 70);
// send mail
mail("$to",$subject,$message,"From: myaddress@mail.com\n");
echo "reminder has been sent";
}
}
}
?>
我已经单独使用该表单(只是自己打开了email_reminder.php),它从我使用的任何电子邮件地址正确发送了电子邮件。它只是在包含在其他脚本中时才发送。
答案 0 :(得分:1)
include(emai_reminder.php);
需要围绕文件名的单引号(并且电子邮件拼写正确:include('email_reminder.php');
但是,看起来你需要更多的帮助而不仅仅是这个。例如,虽然您引用了FROM
,但表单中没有字段$_POST["from"]
。您正在针对该变量运行验证,该变量不存在,验证失败,这会阻止else if
块运行,从而阻止mail()
被调用。
答案 1 :(得分:0)
邮寄到不同的用户定义地址的几个原因可能无效:
1。)检查mail()
调用TRUE
的结果,只是为了确保基础sendmail
(如果你在Linux上)没有返回错误。
2.。)添加其他标头以防止在向国外SMTP主机发送邮件时出现问题,可以在PHP doc for mail()上找到示例
3.。)在某些情况下(即在Windows上使用SMTP时)使用PEAR Mail package可能会解决您的问题。它还支持ASMTP,与mail()
函数相比,错误捕获更容易。