好久没有写博客了,前一段时间想做淘宝客,所以就想到了邮件群发一些垃圾邮件,虽然效果不怎么滴,但是对邮件群发有了一定的认识,对php邮件操作有一定的认知。

原理:

第一申请大量的邮箱帐号 腾讯的 126的 163的 新浪的 雅虎的 谷歌的 等等提供smtp服务的

第二:收集你要发送邮件的邮件列表

第三:遍历邮件列表,每一个邮件发送邮件

第四:用linux下定时脚本后台运行 我跑了两天 哈哈 ,因为为了尽可能的保证每一个都发送成功

 

原理是很简单,但是其中还是遇到很多的问题。

第一:邮件失败的问题,我这里采用两个方式解决,第一把大量的那些邮箱帐号依次去发送,直到成功。然后每次发送500封邮件 后把发送邮箱列表随机打散(避免一个持续失败)。

我用的是phpmailer

多的不多说了上代码了。phpmailer 大家自己搜索下载吧

 

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

 

 
  
  1. <?php  
  2. define('ROOT_PATH',dirname(__FILE__)); 
  3. require_once 'library/senderApi.php'//发送邮件接口 
  4. require_once 'config/senderListConf.php';   //发送邮件帐号列表 
  5. //读取文本 邮件地址  
  6. shuffle($senderListConf); 
  7. $filename = "data/email.txt"
  8. $fp = fopen($filename,"r"); 
  9. $contents = fread($fp,filesize($filename)); 
  10. $list_email=explode("\r\n",$contents);           
  11. $len=count($list_email); 
  12. fclose($fp); 
  13. //邮件内容为网页上的内容 
  14. $htmlContent = file_get_contents('http://taobao.1080www.com'); 
  15. // 参数说明(发送到, 邮件主题, 邮件内容, 附加信息, 用户名) 
  16. foreach($list_email as $key=>$value
  17.     $value = 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. die('SendingOver.................'."\r\n"); 
  27. ?>  

封装phpmailer senderApi.php

 

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

发送邮件列表示例 senderListConf.php

 

 
  
  1. <?php 
  2. $senderListConf = array
  3.  
  4.         //搜狐邮箱 
  5.         array('Host'=>'smtp.sohu.com','Username'=>'youemail@sohu.com','Password'=>'yourpassword'), 
  6.         //雅虎邮箱 
  7.         array('Host'=>'smtp.mail.yahoo.com','Username'=>'youemail@yahoo.cn','Password'=>'yourpassword'), 
  8.         //163邮箱 
  9.         array('Host'=>'smtp.163.com','Username'=>'youemail@163.com','Password'=>'yourpassword'), 
  10.         //126邮箱 
  11.         array('Host'=>'smtp.126.com','Username'=>'youemail@126.com','Password'=>'yourpassword'), 
  12.         //qq邮箱 
  13.         array('Host'=>'smtp.qq.com','Username'=>'youemail@qq.com','Password'=>'yourpassword'), 
  14.         //谷歌邮箱 
  15.         array('Host'=>'smtp.gmail.com','Username'=>'youemail@gmail.com','Password'=>'yourpassword'), 
  16.         //139邮箱 
  17.         array('Host'=>'smtp.139.com','Username'=>'youemail@139.com','Password'=>'yourpassword'), 
  18.         //qq邮箱 
  19.         array('Host'=>'smtp.qq.com','Username'=>'youemail@qq.com','Password'=>'(yourpassword'), 
  20. ); 

文件的代码我上传附件了,但是里面的发送邮箱我改了,如果有用的自行申请。

现在php发送邮件的网上的好多版本,找到适用你的那个就行了。