当前位置:主页 > 行业知识 >

邮件群发机PHP实现实例

发布时间:19-12-06 阅读:969

道理:

第一申请大年夜量的邮箱帐号 腾讯的 126的 163的 新浪的 雅虎的 谷歌的 等等供给smtp办事的

第二:网络你要发送邮件的邮件列表

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

第四:用linux下准时脚本后台运行 我跑了两天 哈哈 ,由于为了尽可能的包管每一个都发送成功

道理是很简单,然则此中照样碰到很多的问题。

第一:邮件掉败的问题,我这里采纳两个要领办理,第一把大年夜量的那些邮箱帐号依次去发送,直到成功。然后每次发送500封邮件 后把发送邮箱列表随机打散(避免一个持续掉败)。

我用的是phpmailer

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

进口脚本:便是linux 履行的 mail_001.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

// 哀求 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

$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'),

);

文件的代码我上传附件了,然则里面的发送邮箱我改了,假如有用的自行申请。

现在php发送邮件的网上的很多多少版本,找到适用你的那个就行了。

本文出自 “web开拓之php” 博客,请务必保留此出处http://phpzf.blog.51cto.com/3011675/1052470



上一篇:因存在安全隐患被吊销牌照 Uber宣布将上诉
下一篇:“美丽山”的美丽传奇