PHP实现邮件群发的源码

2015-01-24信息快讯网

本篇文章是对用PHP实现邮件群发的代码进行了详细的分析介绍,需要的朋友参考下

 <?php 
 // 请求 PHPmailer类 文件 
 require_once("class.phpmailer.php");  

 //发送Email函数 
 function smtp_mail ( $sendto_email, $subject, $body, $extra_hdrs, $user_name) { 
 $mail = new PHPMailer();  
 $mail->IsSMTP();                                     // send via SMTP  
 $mail->Host = "smtp.163.com";                       // SMTP servers  
 $mail->SMTPAuth = true;                             // turn on SMTP authentication  
 $mail->Username = "jessiejl";                          // SMTP username     注意:普通邮件认证不需要加 @域名 
 $mail->Password = "1983106";                         // SMTP password  

 $mail->From = "";                      // 发件人邮箱 
 $mail->FromName = "WWW.NIUTW.COM";                 //   发件人 ,比如 唯美搭配网 

 $mail->CharSet = "GB2312";                          // 这里指定字符集! 
 $mail->Encoding = "base64";  

 $mail->AddAddress($sendto_email,$user_name);        // 收件人邮箱和姓名 
 $mail->AddReplyTo("","Web之家");  

 //$mail->WordWrap = 50; // set word wrap  
 //$mail->AddAttachment("/var/tmp/file.tar.gz");                                                    // attachment  附件1 
 //$mail->AddAttachment("/tmp/image.jpg", "new.jpg");                                         //附件2 
 $mail->IsHTML(true);                               // send as HTML  
 $mail->Subject = $subject;                        

 // 邮件内容      可以直接发送html文件 
 $mail->Body = <<<EOT 
 <html> 
 <head> 
 <title>Treasurery Online 周刊</title> 
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
 <style type="text/css"> 
 <!-- 
 .STYLE1 {color: #009900} 
 .STYLE3 {color: #000000} 
 a:link { 
     color: #333333; 
 } 
 .STYLE4 {color: #666666} 
 body,td,th { 
     font-family: 宋体; 
     font-size: 12px; 
 } 
 .STYLE6 {color: #FFFFFF} 
 .STYLE9 {color: #DCB003} 

    

 --> 
 </style> 
 </head> 
 <body bgcolor="#FFFFFF" > 

 </body> 
 </html> 
 EOT; 
 $mail->AltBody ="text/html";  
 if($mail->Send())  
         {  
    info_write("ok.txt","$user_name 发送成功"); 
         }  
 else { 
    info_write("falied.txt","$user_name 失败,错误信息$mail->ErrorInfo"); 
      } 
 } 
 // 发送Email函数结束 

 // 写入发送结果函数,错误日志记录 
 function info_write($filename,$info_log) 
     { 
      $info.= $info_log; 
      $info.="\r\n"; 
      $fp = fopen ($filename,a); 
      fwrite($fp,$info); 
      fclose($fp); 
     } 

 //定时跳转页面 函数        其中 1000是时间,1秒, 您可以自定义 
 function redirect($url) 
     { 
             echo "<script> 
                 function redirect() 
                 { 
                     window.location.replace('$url'); 
                 } 
                 window.setTimeout('redirect();', 15000); 
               </script>"; 
     } 

 //读取文本 邮件地址  您也可以读 数据库 
         $filename = "email.txt"; 
         $fp = fopen($filename,"r"); 
         $contents = fread($fp,filesize($filename)); 
         $list_email=explode("\r\n",$contents);            
         $len=count($list_email); 
         fclose($fp); 

 // 参数说明(发送到, 邮件主题, 邮件内容, 附加信息, 用户名) 
 $i = $_GET['action']; 
         $i++;        
 if ($i<$len) 
     { 
         $rs=explode("@",$list_email[$i]); 
         $user_name = $rs['0']; 
         echo "正在发送第{$i}封({$list_email[$i]})邮件......{$user_name}"; 
         smtp_mail($list_email[$i], 'Treasurery Online 周刊第十二期', $body, 'http://www.yem120.com/', $user_name); 
         redirect("?action=$i"); 
     } 
 else { 
      echo "邮件全部发送完毕"; 
      exit; 
       } 

 ?> 

小思维:
上面的读取文章email.txt,也可以直接是qq号码,每行一个号码,然后用fget()读取每行qq号码,最后在加上qq邮箱后缀 @qq.com即可
©2014-2024 dbsqp.com