Sub*_*axe 3 php spam-prevention spam phpmailer
我知道,在第一眼看,许多用户将此问题标记为重复,但在阅读了10多个问题之后,我没有得到任何满意的答案,几乎所有问题都有答案,例如"你可以做的事情不多.","我不确定","没有确定的射击技巧"等等,这就是我写这个问题的原因,我认为这是非常普遍的问题,而且每个php开发人员都至少面对它一次,确实足够的语言:),现在我的问题是......
我正在开发一个项目管理应用程序,并且在创建任何任务时使用phpmailer发送邮件,或者任何有关任何错误邮件的评论被发送给相关用户,实际上不是在动作发生后立即发送邮件我创建了"通知"表我实际保存所有邮件数据和cron脚本,然后发送所有邮件,这是我的cron脚本的一部分.
$query = "select * from notifications where 1 ";
$projects = $obj_basic->get_query_data($query);
if(!empty($projects))
{
foreach($projects as $data)
{
$message = html_entity_decode($data['content'], ENT_QUOTES);
list($ton, $email) = get_name_email($data['to']);
if(!empty($email))
{
$query = "select send_notification from users where email='$email' AND send_notification !='1' ";
$users = $obj_basic->get_query_data($query);
if(!empty($users))
{
$deleteQuery = "delete from notifications where id ='".$data['id']."'";
$obj_basic->run_query($deleteQuery, 'DELETE');
continue;
}
$comment_id = $data['reference_id'];
$attribute = $data['attribute'];
$mail = new PHPMailer();
list($fromName, $fromEmail) = get_name_email($data['from']);
if(!empty($comment_id) && $attribute == 'comment')
{
$fromEmail = 'comment@changewebaddress.com';
}
$mail->SetFrom($fromEmail, $fromName);
$mail->AddReplyTo($fromEmail, $fromName);
$mail->AddAddress($email, $ton);
$mail->BouncedTo = $fromEmail;
$mail->IsHTML(true);
$mail->Subject = $data['subject'];
$mail->Body = $message;
$MessageID = "<".md5($comment_id.'_'.$email).'@changewebaddress.com>';
$mail->MessageID= $MessageID;
if($mail->Send()) {
if(!empty($comment_id) && $attribute == 'comment')
{
$query = "SELECT message_id FROM `project_comments` WHERE `id`='$comment_id'; ";
$project_comments = $obj_basic->get_query_data($query, 'SELECT');
if(!empty($project_comments))
{
$project_comments[0]['message_id'] = html_entity_decode(trim($project_comments[0]['message_id'], ","));
$query = "UPDATE `project_comments` SET `message_id`=CONCAT_WS(',', '".mysql_escape_string($project_comments[0]['message_id'])."', '".mysql_escape_string(html_entity_decode($MessageID))."') WHERE `id`='$comment_id'; ";
$obj_basic->run_query($query, 'UPDATE');
}
}
$deleteQuery = "delete from notifications where id ='".$data['id']."'";
$obj_basic->run_query($deleteQuery, 'DELETE');
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
按什么我已经测试一切看起来不错,因为我使用的PHPMailer它集所需的头还设置"返回路径:"和"回复到:"在标题中.
在这个问题上有没有确切的解决方案
Sam*_*tch 15