PHP邮件群发机实现代码

2025-05-29 0 17

原理:
第一:申请大量的邮箱帐号 腾讯的 126的 163的 新浪的 雅虎的 谷歌的 等等提供smtp服务的
第二:收集你要发送邮件的邮件列表
第三:遍历邮件列表,每一个邮件发送邮件
第四:用linux下定时脚本后台运行 我跑了两天 哈哈 ,因为为了尽可能的保证每一个都发送成功

原理是很简单,但是其中还是遇到很多的问题。

第一:邮件失败的问题,我这里采用两个方式解决,第一把大量的那些邮箱帐号依次去发送,直到成功。然后每次发送500封邮件 后把发送邮箱列表随机打散(避免一个持续失败)。
我用的是phpmailer
多的不多说了上代码了。phpmailer 大家自己搜索下载吧

入口脚本:就是linux 执行的 mail_001.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29
<?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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54
<?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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20
<?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'),

);

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP邮件群发机实现代码 https://www.kuaiidc.com/99202.html

相关文章

发表评论
暂无评论