原理:
第一:申请大量的邮箱帐号 腾讯的 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("rn",$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.................'."rn");
?>
封装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.="rn";
$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'),
);
【说明】:
本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!