700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【代码】邮件群发机PHP实现实例分享

【代码】邮件群发机PHP实现实例分享

时间:2023-09-22 07:38:48

相关推荐

【代码】邮件群发机PHP实现实例分享

原理:

第一申请大量的邮箱帐号 腾讯的 126的 163的 新浪的 雅虎的 谷歌的 等等提供smtp服务的

第二:收集你要发送邮件的邮件列表

第三:遍历邮件列表,每一个邮件发送邮件

第四:用linux下定时脚本后台运行 我跑了两天 哈哈 ,因为为了尽可能的保证每一个都发送成功

原理是很简单,但是其中还是遇到很多的问题。

第一:邮件失败的问题,我这里采用两个方式解决,第一把大量的那些邮箱帐号依次去发送,直到成功。然后每次发送500封邮件 后把发送邮箱列表随机打散(避免一个持续失败)。(PS:^_^不错的php开发交流群:304224365,验证:csl,有兴趣的话可以加入进来一起讨论)

我用的是phpmailer

多的不多说了上代码了。phpmailer 大家自己搜索下载吧

入口脚本:就是linux 执行的 mail_001.php

01<?php 02define('ROOT_PATH',dirname(__FILE__));03require_once 'library/senderApi.php'; //发送邮件接口04require_once 'config/senderListConf.php'; //发送邮件帐号列表05//读取文本 邮件地址 06shuffle($senderListConf);07$filename = "data/email.txt";08$fp = fopen($filename,"r");09$contents = fread($fp,filesize($filename));10$list_email=explode("\r\n",$contents);11$len=count($list_email);12fclose($fp);13//邮件内容为网页上的内容14$htmlContent = file_get_contents('');15// 参数说明(发送到, 邮件主题, 邮件内容, 附加信息, 用户名)16foreach($list_email as $key=>$value)17{18$value = trim($value);19$rs=explode("@",$value);20$user_name = $rs['0'];21smtp_mail($value, '秋季补水化妆品_秋季护肤皮肤保养_秋天皮肤干燥怎么办-小常识',$htmlContent, '/', $user_name,$senderListConf,0);22sleep(3);23if($key%200 == 0 && $key>0)24{25shuffle($senderListConf); //每200次 吧发送邮件顺序打乱一次26}27}28die('SendingOver.................'."\r\n");29?>封装phpmailer senderApi.php01<?php 02// 请求 PHPmailer类 文件 03error_reporting(E_ERROR); 04require_once("phpmailer/phpmailer.class.php"); 05// 写入发送结果函数 06function info_write($filename,$info_log) 07{ 08$info.= $info_log; 09$info.="\r\n"; 10$fp = fopen ($filename,'a'); 11fwrite($fp,$info); 12fclose($fp); 13} 14//发送Email函数 15function smtp_mail ( $sendto_email, $subject, $body, $extra_hdrs, $user_name,$senderListConf,$sender=0) { 16$batch_no = date("Y_m_d_H"); 17$mail = new PHPMailer(); 18$mail->IsSMTP(); 19$sender_info = $senderListConf[$sender]; 20if(!$sender_info) 'die 发送帐号出错了..............'; // send via SMTP 21$mail->Host = $sender_info['Host']; // SMTP servers 22$mail->SMTPAuth = true; // turn on SMTP authentication 23$mail->Username = $sender_info['Username'];// SMTP username注意:普通邮件认证不需要加 @域名 24$mail->Password = $sender_info['Password'];// SMTP password 25$mail->From = $sender_info['Username']; // 发件人邮箱 26$mail->FromName = "淘宝推荐---TaoBao"; // 发件人 ,比如 中国资金管理网 27$mail->CharSet = "UTF-8";// 这里指定字符集! 28$mail->Encoding = "base64"; 29$mail->AddAddress($sendto_email,$user_name); // 收件人邮箱和姓名 30$mail->AddReplyTo("ken@","淘宝推荐"); 3132//$mail->WordWrap = 50; // set word wrap 33//$mail->AddAttachment("/var/tmp/file.tar.gz"); // attachment 附件1 34//$mail->AddAttachment("/home/www/images/zhuanti/qiujibushui/qiujibushui_attache.jpg", "new.jpg"); //附件2 35$mail->IsHTML(true); // send as HTML 36$mail->Subject = $subject;3738// 邮件内容可以直接发送html文件 39$mail->Body = $body; 40$mail->AltBody ="text/html"; 41if($mail->Send()) 42{ 43info_write(ROOT_PATH.'/log/'.$batch_no."ok.txt","$user_name 发送成功"); 44} 45else46{ 47info_write(ROOT_PATH.'/log/'.$batch_no."falied.txt","$user_name 失败,发送账号".$sender_info['Username'].",错误信息$mail->ErrorInfo"); 48if($senderListConf[$sender+1]) 49{ 50$sender = smtp_mail ( $sendto_email, $subject, $body, $extra_hdrs, $user_name,$senderListConf,($sender+1)); 51} 52} 53return $sender; 54}

发送邮件列表示例 senderListConf.php

view sourceprint?01ListConf = array( 0203//搜狐邮箱 04array('Host'=>'','Username'=>'youemail@','Password'=>'yourpassword'), 05//雅虎邮箱 06array('Host'=>'smtp.','Username'=>'youemail@','Password'=>'yourpassword'), 07//163邮箱 08array('Host'=>'','Username'=>'youemail@','Password'=>'yourpassword'), 09//126邮箱 10array('Host'=>'','Username'=>'youemail@','Password'=>'yourpassword'), 11//qq邮箱 12array('Host'=>'','Username'=>'youemail@','Password'=>'yourpassword'), 13//谷歌邮箱 14array('Host'=>'','Username'=>'youemail@','Password'=>'yourpassword'), 15//139邮箱 16array('Host'=>'','Username'=>'youemail@','Password'=>'yourpassword'), 17//qq邮箱 18array('Host'=>'','Username'=>'youemail@','Password'=>'(yourpassword'),

以上是本文关于邮件群发机PHP实现实例分享,希望本文对广大php开发者有所帮助,感谢阅读本文。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。