| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
SimoneNewco
10年前发布

PHP实现邮件群发机

原理: 第一:申请大量的邮箱帐号 腾讯的 126的 163的 新浪的 雅虎的 谷歌的 等等提供smtp服务的 第二:收集你要发送邮件的邮件列表 第三:遍历邮件列表,每一个邮件发送邮件 第四:用linux下定时脚本后台运行 我跑了两天 哈哈 ,因为为了尽可能的保证每一个都发送成功 原理是很简单,但是其中还是遇到很多的问题。 第一:邮件失败的问题,我这里采用两个方式解决,第一把大量的那些邮箱帐号依次去发送,直到成功。然后每次发送500封邮件 后把发送邮箱列表随机打散(避免一个持续失败)。 我用的是phpmailer 多的不多说了上代码了。phpmailer 大家自己搜索下载吧 入口脚本:就是linux 执行的 mail_001.php
<?php    define('ROOT_PATH',dirname(__FILE__));   require_once 'library/senderApi.php'; //发送邮件接口   require_once 'config/senderListConf.php';   //发送邮件帐号列表   //读取文本 邮件地址    shuffle($senderListConf);   $filename = "data/email.txt";   $fp = fopen($filename,"r");   $contents = fread($fp,filesize($filename));   $list_email=explode("\r\n",$contents);             $len=count($list_email);   fclose($fp);   //邮件内容为网页上的内容   $htmlContent = file_get_contents('http://taobao.1080www.com');   // 参数说明(发送到, 邮件主题, 邮件内容, 附加信息, 用户名)   foreach($list_email as $key=>$value)   {       $value = trim($value);       $rs=explode("@",$value);       $user_name = $rs['0'];       smtp_mail($value, '秋季补水化妆品_秋季护肤皮肤保养_秋天皮肤干燥怎么办-小常识',$htmlContent, 'http://taobao.1080www.com/', $user_name,$senderListConf,0);       sleep(3);       if($key%200 == 0 && $key>0)       {           shuffle($senderListConf); //每200次 吧发送邮件顺序打乱一次       }   }   die('SendingOver.................'."\r\n");   ?>


封装phpmailer senderApi.php

<?php    // 请求 PHPmailer类 文件   error_reporting(E_ERROR);   require_once("phpmailer/phpmailer.class.php");   // 写入发送结果函数   function info_write($filename,$info_log)   {       $info.= $info_log;       $info.="\r\n";       $fp = fopen ($filename,'a');       fwrite($fp,$info);       fclose($fp);   }   //发送Email函数   function smtp_mail ( $sendto_email, $subject, $body, $extra_hdrs, $user_name,$senderListConf,$sender=0) {        $batch_no = date("Y_m_d_H");       $mail = new PHPMailer();         $mail->IsSMTP();       $sender_info = $senderListConf[$sender];       if(!$sender_info) 'die 发送帐号出错了..............';   // send via SMTP         $mail->Host = $sender_info['Host'];                       // SMTP servers         $mail->SMTPAuth = true;                             // turn on SMTP authentication         $mail->Username = $sender_info['Username'];                          // SMTP username     注意:普通邮件认证不需要加 @域名        $mail->Password = $sender_info['Password'];                         // SMTP password         $mail->From = $sender_info['Username'];                      // 发件人邮箱        $mail->FromName = "淘宝推荐---TaoBao";                 //   发件人 ,比如 中国资金管理网       $mail->CharSet = "UTF-8";                          // 这里指定字符集!        $mail->Encoding = "base64";         $mail->AddAddress($sendto_email,$user_name);        // 收件人邮箱和姓名        $mail->AddReplyTo("ken@cscsws.com","淘宝推荐");                   //$mail->WordWrap = 50; // set word wrap         //$mail->AddAttachment("/var/tmp/file.tar.gz");                                                    // attachment  附件1       //$mail->AddAttachment("/home/www/images/zhuanti/qiujibushui/qiujibushui_attache.jpg", "new.jpg");                                         //附件2       $mail->IsHTML(true);                               // send as HTML         $mail->Subject = $subject;                                     // 邮件内容      可以直接发送html文件       $mail->Body = $body;       $mail->AltBody ="text/html";         if($mail->Send())         {            info_write(ROOT_PATH.'/log/'.$batch_no."ok.txt","$user_name 发送成功");       }         else      {           info_write(ROOT_PATH.'/log/'.$batch_no."falied.txt","$user_name 失败,发送账号".$sender_info['Username'].",错误信息$mail->ErrorInfo");          if($senderListConf[$sender+1])          {              $sender = smtp_mail ( $sendto_email, $subject, $body, $extra_hdrs, $user_name,$senderListConf,($sender+1));          }       }       return $sender;    }
发送邮件列表示例 senderListConf.php
<?php   $senderListConf = array(                 //搜狐邮箱           array('Host'=>'smtp.sohu.com','Username'=>'youemail@sohu.com','Password'=>'yourpassword'),           //雅虎邮箱           array('Host'=>'smtp.mail.yahoo.com','Username'=>'youemail@yahoo.cn','Password'=>'yourpassword'),           //163邮箱           array('Host'=>'smtp.163.com','Username'=>'youemail@163.com','Password'=>'yourpassword'),           //126邮箱           array('Host'=>'smtp.126.com','Username'=>'youemail@126.com','Password'=>'yourpassword'),           //qq邮箱           array('Host'=>'smtp.qq.com','Username'=>'youemail@qq.com','Password'=>'yourpassword'),           //谷歌邮箱           array('Host'=>'smtp.gmail.com','Username'=>'youemail@gmail.com','Password'=>'yourpassword'),           //139邮箱           array('Host'=>'smtp.139.com','Username'=>'youemail@139.com','Password'=>'yourpassword'),           //qq邮箱           array('Host'=>'smtp.qq.com','Username'=>'youemail@qq.com','Password'=>'(yourpassword'),   );

转自: http://phpzf.blog.51cto.com/3011675/1052470