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即可