当前位置:首页 > PHP教程 > php高级应用 > 列表

PHP邮件群发机实现代码

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-10 11:28:56 浏览: 评论:0 

这篇文章主要介绍了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=&gt;$value)  
  17. {  
  18.  $value = trim($value);  
  19.  $rs=explode("@",$value);  
  20.  $user_name = $rs['0'];  
  21.  smtp_mail($value'秋季补水化妆品_秋季护肤皮肤保养_秋天皮肤干燥怎么办-小常识',$htmlContent'http://taobao.1080www.com/'$user_name,$senderListConf,0);  
  22.  sleep(3);  
  23.  if($key%200 == 0 && $key&gt;0)  
  24.  {  
  25.   shuffle($senderListConf); //每200次 吧发送邮件顺序打乱一次  
  26.  }  
  27. }  
  28. die('SendingOver.................'."\r\n");  
  29. ?> 

封装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-&gt;IsSMTP();  
  18.  $sender_info = $senderListConf[$sender];  
  19.  if(!$sender_info'die 发送帐号出错了..............'// send via SMTP  
  20.  $mail-&gt;Host = $sender_info['Host'];      // SMTP servers  
  21.  $mail-&gt;SMTPAuth = true;        // turn on SMTP authentication  
  22.  $mail-&gt;Username = $sender_info['Username'];       // SMTP username  注意:普通邮件认证不需要加 @域名  
  23.  $mail-&gt;Password = $sender_info['Password'];       // SMTP password  
  24.  $mail-&gt;From = $sender_info['Username'];      // 发件人邮箱  
  25.  $mail-&gt;FromName = "淘宝推荐---TaoBao";     // 发件人 ,比如 中国资金管理网  
  26.  $mail-&gt;CharSet = "UTF-8";       // 这里指定字符集!  
  27.  $mail-&gt;Encoding = "base64";  
  28.  $mail-&gt;AddAddress($sendto_email,$user_name);  // 收件人邮箱和姓名  
  29.  $mail-&gt;AddReplyTo("ken@cscsws.com","淘宝推荐");  
  30.     
  31.  //$mail-&gt;WordWrap = 50; // set word wrap  
  32.  //$mail-&gt;AddAttachment("/var/tmp/file.tar.gz");             // attachment 附件1  
  33.  //$mail-&gt;AddAttachment("/home/www/images/zhuanti/qiujibushui/qiujibushui_attache.jpg", "new.jpg");           //附件2  
  34.  $mail-&gt;IsHTML(true);        // send as HTML  
  35.  $mail-&gt;Subject = $subject;        
  36.    
  37.  // 邮件内容  可以直接发送html文件  
  38.  $mail-&gt;Body = $body;  
  39.  $mail-&gt;AltBody ="text/html";  
  40.  if($mail-&gt;Send())  
  41.  {  
  42.   info_write(ROOT_PATH.'/log/'.$batch_no."ok.txt","$user_name 发送成功");  
  43.  }  
  44.  else 
  45.  {  
  46.   info_write(ROOT_PATH.'/log/'.$batch_no."falied.txt","$user_name 失败,发送账号".$sender_info['Username'].",错误信息$mail-&gt;ErrorInfo");  
  47.   if($senderListConf[$sender+1])  
  48.   {  
  49.    $sender = smtp_mail ( $sendto_email$subject$body$extra_hdrs$user_name,$senderListConf,($sender+1));  
  50.   }  
  51.  }  
  52.  return $sender;  

发送邮件列表示例 senderListConf.php

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

Tags: PHP邮件群发机

分享到: