好久沒有寫部落格了,前一段時間想做淘寶客,所以就想到了郵件群發一些垃圾郵件,雖然效果不怎麼滴,但是對郵件群發有了一定的認識,對php郵件操作有一定的認知。
原理:
第一申請大量的郵箱帳號 騰訊的 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(" ",$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.................`." ");
- ?>
封裝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.=" ";
- $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"); // p_w_upload 附件1
- //$mail->AddAttachment("/home/www/p_w_picpaths/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`),
- );
檔案的程式碼我上傳附件了,但是裡面的傳送郵箱我改了,如果有用的自行申請。
現在php傳送郵件的網上的好多版本,找到適用你的那個就行了。