原理:
第一:申请大量的邮箱帐号 腾讯的 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'), );

使用数据库存储会话的主要优势包括持久性、可扩展性和安全性。1.持久性:即使服务器重启,会话数据也能保持不变。2.可扩展性:适用于分布式系统,确保会话数据在多服务器间同步。3.安全性:数据库提供加密存储,保护敏感信息。

在PHP中实现自定义会话处理可以通过实现SessionHandlerInterface接口来完成。具体步骤包括:1)创建实现SessionHandlerInterface的类,如CustomSessionHandler;2)重写接口中的方法(如open,close,read,write,destroy,gc)来定义会话数据的生命周期和存储方式;3)在PHP脚本中注册自定义会话处理器并启动会话。这样可以将数据存储在MySQL、Redis等介质中,提升性能、安全性和可扩展性。

SessionID是网络应用程序中用来跟踪用户会话状态的机制。1.它是一个随机生成的字符串,用于在用户与服务器之间的多次交互中保持用户的身份信息。2.服务器生成并通过cookie或URL参数发送给客户端,帮助在用户的多次请求中识别和关联这些请求。3.生成通常使用随机算法保证唯一性和不可预测性。4.在实际开发中,可以使用内存数据库如Redis来存储session数据,提升性能和安全性。

在无状态环境如API中管理会话可以通过使用JWT或cookies来实现。1.JWT适合无状态和可扩展性,但大数据时体积大。2.Cookies更传统且易实现,但需谨慎配置以确保安全性。

要保护应用免受与会话相关的XSS攻击,需采取以下措施:1.设置HttpOnly和Secure标志保护会话cookie。2.对所有用户输入进行输出编码。3.实施内容安全策略(CSP)限制脚本来源。通过这些策略,可以有效防护会话相关的XSS攻击,确保用户数据安全。

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显着提升应用在高并发环境下的效率。

thesession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceIsiseededeedeedeedeedeedeedto to to avoidperformance andununununununexpectedLogOgouts.3)

在PHP中,可以使用session_name()函数配置会话名称。具体步骤如下:1.使用session_name()函数设置会话名称,例如session_name("my_session")。2.在设置会话名称后,调用session_start()启动会话。配置会话名称可以避免多应用间的会话数据冲突,并增强安全性,但需注意会话名称的唯一性、安全性、长度和设置时机。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Dreamweaver CS6
视觉化网页开发工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

SublimeText3汉化版
中文版,非常好用