PHP自动发送电子邮件不起作用
我已经写了一些代码,使电子邮件自动发送到用户的电子邮件地址点击一个按钮。但出于某种原因,它不发送任何电子邮件,我用两个不同的电子邮件地址对它进行了测试 按钮代码:PHP自动发送电子邮件不起作用,php,mysql,sql,email,Php,Mysql,Sql,Email,我已经写了一些代码,使电子邮件自动发送到用户的电子邮件地址点击一个按钮。但出于某种原因,它不发送任何电子邮件,我用两个不同的电子邮件地址对它进行了测试 按钮代码: form action="sendellie.php" method="post"> <input type="submit" value="Buy tickets"/> </form> formaction=“sendellie.php”method=“post”> 处理页面的代码: <?ph
form action="sendellie.php" method="post">
<input type="submit" value="Buy tickets"/>
</form>
formaction=“sendellie.php”method=“post”>
处理页面的代码:
<?php
session_start();
include 'connect.php';
ini_set("sendmail_from", "********");
$user_id= $_SESSION['id'];
$sql = "SELECT username FROM user WHERE user_id = '$user_id'";
$result = mysql_query($sql) or die('Query failed. ' . mysql_error());
$uname = mysql_fetch_array($result);
$result = mysql_query($sql) or die('Query failed. ' . mysql_error());
$uemail = mysql_fetch_array($result);
$user_id= $_SESSION['id'];
$sql = "SELECT email FROM user WHERE user_id = '$user_id'";
$result = mysql_query($sql) or die('Query failed. ' . mysql_error());
$uemail = mysql_fetch_array($result);
while($row = mysql_fetch_array($result))
{
$name = $uname['username'];
$email = $uemail['email'];
$message = "This email is to confirm you have purchased one Ellie Goulding Ticket for the O2";
$subject = $uname['username'];
echo "sent to"." ".$email." ".$subject." ".$message."<p />";
mail($email, $subject, $message);
}
echo "Go check your mail box:";
include 'close.php';
?>
<?php echo $uemail['email'] ?><br>
<a href="ellie.php">Back</a>
这应该有效(检查下面的注释):
我用这个代码来发送邮件,试试这个
<html>
<body>
<?php
if (isset($_REQUEST['email']))
{
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail("someone@example.com", $subject,
$message, "From:" . $email);
echo "Thank you for using our mail form";
}
else
{
echo "<form method='post' action='mailform.php'>
Email: <input name='email' type='text'><br>
Subject: <input name='subject' type='text'><br>
Message:<br>
<textarea name='message' rows='15' cols='40'>
</textarea><br>
<input type='submit'>
</form>";
}
?>
</body>
</html>
很多事情都会阻止电子邮件到达某人的收件箱,其中很少有事情与代码有关。日志中是否有错误消息?SMTP服务器出错?当您针对您控制的模拟SMTP服务器进行测试时,其行为是什么?调试时,是否调用了mail()
?(旁注:为什么要两次点击数据库以从同一条记录中获取两个字段?)。相反,给自己发一封简单的电子邮件,看看你是否收到了。你确定用户id是字符串吗?如果是int,则执行以下操作:$sql=“从用户选择用户名,其中用户\u id={$user\u id}”;通过使用外部变量构建SQL语句,您将面临SQL注入攻击。此外,任何带有单引号的输入数据,如“O'Malley”的名称,都会破坏您的SQL查询。请了解如何使用参数化查询(最好是PDO模块)来保护您的web应用程序。我的网站有一些例子可以让你开始,并且有很多详细的例子。
mail(to,subject,message,headers,parameters)
<html>
<body>
<?php
if (isset($_REQUEST['email']))
{
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail("someone@example.com", $subject,
$message, "From:" . $email);
echo "Thank you for using our mail form";
}
else
{
echo "<form method='post' action='mailform.php'>
Email: <input name='email' type='text'><br>
Subject: <input name='subject' type='text'><br>
Message:<br>
<textarea name='message' rows='15' cols='40'>
</textarea><br>
<input type='submit'>
</form>";
}
?>
</body>
</html>