找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 200|回复: 0
打印 上一主题 下一主题

PHP邮件群发机实现代码

[复制链接]

2487

主题

2487

帖子

7391

积分

论坛元老

Rank: 8Rank: 8

积分
7391
跳转到指定楼层
楼主
发表于 2018-2-14 05:38:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            原理:
第一:申请大量的邮箱帐号 腾讯的 126的 163的 新浪的 雅虎的 谷歌的 等等提供smtp服务的
第二:收集你要发送邮件的邮件列表
第三:遍历邮件列表,每一个邮件发送邮件
第四:用linux下定时脚本后台运行 我跑了两天 哈哈 ,因为为了尽可能的保证每一个都发送成功
原理是很简单,但是其中还是遇到很多的问题。

第一:邮件失败的问题,我这里采用两个方式解决,第一把大量的那些邮箱帐号依次去发送,直到成功。然后每次发送500封邮件 后把发送邮箱列表随机打散(避免一个持续失败)。
我用的是phpmailer
多的不多说了上代码了。phpmailer 大家自己搜索下载吧
入口脚本:就是linux 执行的 mail_001.php
$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
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->assword = $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
'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'),
);
            
            
您可能感兴趣的文章:
  • PHP实现邮件群发的源码
  • PHP配置把错误日志以邮件方式发送方法(Windows系统)
  • php可扩展的验证类实例(可对邮件、手机号、URL等验证)
  • php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
  • php邮件发送的两种方式
  • php利用smtp类实现电子邮件发送
  • PHP实现发送邮件的方法(基于简单邮件发送类)
  • thinkphp实现163、QQ邮箱收发邮件的方法
  • PHP的邮件群发系统phplist配置方法详细总结
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端