php电子邮件发送脚本不发送电子邮件

时间:2011-06-16 11:02:27

标签: php email send

以下是我发送电子邮件查询的脚本..收件人的电子邮件地址存储在一个名为users的数据库中..这个脚本无法正常运行..我认为问题是收件人电子邮件部分..因为当我使用电子邮件时地址而不是$ user它将工作..

thanx帮帮我

<?php
$refno = $HTTP_POST_VARS['refno'];
$proid = $HTTP_POST_VARS['proid'];
$name = $HTTP_POST_VARS['name'];
$email = $HTTP_POST_VARS['email'];
$msg = $HTTP_POST_VARS['msg'];

//connect db and find email address related to id
include 'db_connector.php';
$id=$HTTP_POST_VARS['id'];
$query=mysql_query("SELECT user_email FROM users WHERE id='".$id."'");
$cont=mysql_fetch_array($query);
$user=$cont['user_email'];  

// recipient name
$recipientname = "'".$name."'";

// recipient email
$recipientemail = $user ;


// subject of the email sent to you
$subject = "Inquiry for your advertisement No. (".$refno.")";

// send an autoresponse to the user?
$autoresponse = "no";

// subject of autoresponse
$autosubject = "Thank you for your inquiry!";

// autoresponse message
$automessage = "Thank you for your inquiry.! We'll get back to you shortly.

";

// END OF NECESSARY MODIFICATIONS


$message = "reference number : $refno

$msg

From $name $email 

---"; 


// send mail and print success message
mail($recipientemail,"$subject","$message","From: $recipientname <$email>");

if($autoresponse == "yes") {
$autosubject = stripslashes($autosubject);
$automessage = stripslashes($automessage);
mail($email,"$autosubject","$automessage","From: $recipientname <$recipientemail>");
}

header("Location:index.php");
exit;

?>

3 个答案:

答案 0 :(得分:1)

首先,您的查询是SQL可注入的。永远不要将来自POST请求的变量直接传递给SQL查询。使用mysql_real_escape()

关于您的错误:$user似乎不包含有效的电子邮件地址。所以,Mysql查询没有返回电子邮件地址。

使用$ _POST而不是$ HTTP_POST_VARS。

通过将这两行添加到PHP代码来启用错误报告:

PHP代码:

error_reporting(E_ALL);
ini_set('display_errors','1');

再次运行您的脚本。你有任何通知或警告吗?

如果没有,请尝试添加

来显示您的查询
die($query);

在具有mysql_query命令的行之前,然后手动运行查询(例如,使用PhpMyAdmin或MySQL查询浏览器)以查看您是否实际获得的结果看起来像电子邮件地址。

答案 1 :(得分:0)

调试PHP程序。

退房:

       
  • 如果变量包含假定的值。
  •    
  • 查询没问题并返回结果。
  •   
  • 使用邮件功能设置正确的标题。
  •   
  • 等。

PHP manual有一个发送邮件的好例子。

请勿使用$HTTP_POST_VARS['name'];弃用,而是使用$_POST

答案 2 :(得分:0)

嘿伙计们帮助..我在我的查询表单中发现了错误... id隐藏在表单标签之外...因此id值不会传递给sendinq.php。我改变它,现在谢谢sendmail选项正常工作