原理:
第一:申请大量的邮箱帐号 腾讯的 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\'), );
本文地址:https://www.stayed.cn/item/8991
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我