PHP实现邮件群发机

好久没有写博客了,前一段时间想做淘宝客,所以就想到了邮件群发一些垃圾邮件,虽然效果不怎么滴,但是对邮件群发有了一定的认识,对php邮件操作有一定的认知。
原理:
第一申请大量的邮箱帐号 腾讯的 126的 163的 新浪的 雅虎的 谷歌的 等等提供smtp服务的
第二:收集你要发送邮件的邮件列表
第三:遍历邮件列表,每一个邮件发送邮件
第四:用linux下定时脚本后台运行 我跑了两天 哈哈 ,因为为了尽可能的保证每一个都发送成功

原理是很简单,但是其中还是遇到很多的问题。
【PHP实现邮件群发机】第一:邮件失败的问题,我这里采用两个方式解决,第一把大量的那些邮箱帐号依次去发送,直到成功。然后每次发送500封邮件 后把发送邮箱列表随机打散(避免一个持续失败)。
我用的是phpmailer
多的不多说了上代码了。phpmailer 大家自己搜索下载吧

入口脚本:就是linux 执行的 mail_001.php


  1. define('ROOT_PATH',dirname(__FILE__));
  2. require_once 'library/senderApi.php'; //发送邮件接口
  3. require_once 'config/senderListConf.php'; //发送邮件帐号列表
  4. //读取文本 邮件地址
  5. shuffle($senderListConf);
  6. $filename = "data/email.txt";
  7. $fp = fopen($filename,"r");
  8. $contents = fread($fp,filesize($filename));
  9. $list_email=explode("\r\n",$contents);
  10. $len=count($list_email);
  11. fclose($fp);
  12. //邮件内容为网页上的内容
  13. $htmlContent = file_get_contents('http://taobao.1080www.com');
  14. // 参数说明(发送到, 邮件主题, 邮件内容, 附加信息, 用户名)
  15. foreach($list_email as $key=>$value)
  16. {
  17. $value = https://www.it610.com/article/trim($value);
  18. $rs=explode("@",$value);
  19. $user_name = $rs['0'];
  20. smtp_mail($value, '秋季补水化妆品_秋季护肤皮肤保养_秋天皮肤干燥怎么办-小常识',$htmlContent, 'http://taobao.1080www.com/', $user_name,$senderListConf,0);
  21. sleep(3);
  22. if($key%200 == 0 && $key>0)
  23. {
  24. shuffle($senderListConf); //每200次 吧发送邮件顺序打乱一次
  25. }
  26. }
  27. die('SendingOver.................'."\r\n");
  28. ?>
封装phpmailer senderApi.php


  1. // 请求 PHPmailer类 文件
  2. error_reporting(E_ERROR);
  3. require_once("phpmailer/phpmailer.class.php");
  4. // 写入发送结果函数
  5. function info_write($filename,$info_log)
  6. {
  7. $info.= $info_log;
  8. $info.="\r\n";
  9. $fp = fopen ($filename,'a');
  10. fwrite($fp,$info);
  11. fclose($fp);
  12. }
  13. //发送Email函数
  14. function smtp_mail ( $sendto_email, $subject, $body, $extra_hdrs, $user_name,$senderListConf,$sender=0) {
  15. $batch_no = date("Y_m_d_H");
  16. $mail = new PHPMailer();
  17. $mail->IsSMTP();
  18. $sender_info = $senderListConf[$sender];
  19. if(!$sender_info) 'die 发送帐号出错了..............'; // send via SMTP
  20. $mail->Host = $sender_info['Host']; // SMTP servers
  21. $mail->SMTPAuth = true; // turn on SMTP authentication
  22. $mail->Username = $sender_info['Username']; // SMTP username注意:普通邮件认证不需要加 @域名
  23. $mail->Password = $sender_info['Password']; // SMTP password
  24. $mail->From = $sender_info['Username']; // 发件人邮箱
  25. $mail->FromName = "淘宝推荐---TaoBao"; //发件人 ,比如 中国资金管理网
  26. $mail->CharSet = "UTF-8"; // 这里指定字符集!
  27. $mail->Encoding = "base64";
  28. $mail->AddAddress($sendto_email,$user_name); // 收件人邮箱和姓名
  29. $mail->AddReplyTo("ken@cscsws.com","淘宝推荐");
  30. //$mail->WordWrap = 50; // set word wrap
  31. //$mail->AddAttachment("/var/tmp/file.tar.gz"); // p_w_upload附件1
  32. //$mail->AddAttachment("/home/www/p_w_picpaths/zhuanti/qiujibushui/qiujibushui_attache.jpg", "new.jpg"); //附件2
  33. $mail->IsHTML(true); // send as HTML
  34. $mail->Subject = $subject;
  35. // 邮件内容可以直接发送html文件
  36. $mail->Body = $body;
  37. $mail->AltBody ="text/html";
  38. if($mail->Send())
  39. {
  40. info_write(ROOT_PATH.'/log/'.$batch_no."ok.txt","$user_name 发送成功");
  41. }
  42. else
  43. {
  44. info_write(ROOT_PATH.'/log/'.$batch_no."falied.txt","$user_name 失败,发送账号".$sender_info['Username'].",错误信息$mail->ErrorInfo");
  45. if($senderListConf[$sender+1])
  46. {
  47. $sender = smtp_mail ( $sendto_email, $subject, $body, $extra_hdrs, $user_name,$senderListConf,($sender+1));
  48. }
  49. }
  50. return $sender;
  51. }
发送邮件列表示例 senderListConf.php


  1. $senderListConf = array(
  2. //搜狐邮箱
  3. array('Host'=>'smtp.sohu.com','Username'=>'youemail@sohu.com','Password'=>'yourpassword'),
  4. //雅虎邮箱
  5. array('Host'=>'smtp.mail.yahoo.com','Username'=>'youemail@yahoo.cn','Password'=>'yourpassword'),
  6. //163邮箱
  7. array('Host'=>'smtp.163.com','Username'=>'youemail@163.com','Password'=>'yourpassword'),
  8. //126邮箱
  9. array('Host'=>'smtp.126.com','Username'=>'youemail@126.com','Password'=>'yourpassword'),
  10. //qq邮箱
  11. array('Host'=>'smtp.qq.com','Username'=>'youemail@qq.com','Password'=>'yourpassword'),
  12. //谷歌邮箱
  13. array('Host'=>'smtp.gmail.com','Username'=>'youemail@gmail.com','Password'=>'yourpassword'),
  14. //139邮箱
  15. array('Host'=>'smtp.139.com','Username'=>'youemail@139.com','Password'=>'yourpassword'),
  16. //qq邮箱
  17. array('Host'=>'smtp.qq.com','Username'=>'youemail@qq.com','Password'=>'(yourpassword'),
  18. );
文件的代码我上传附件了,但是里面的发送邮箱我改了,如果有用的自行申请。
现在php发送邮件的网上的好多版本,找到适用你的那个就行了。
转载于:https://blog.51cto.com/phpzf/1052470

    推荐阅读