php smtp邮件群发程序源代码

<?php
/**
*通过phpmailer发送qq邮件
*@author ray
*@since 2009-08-07
*/
define('__DEBUG__', false);
define('__PSW_FILE__', dirname(__FILE__) . '/smtp.dat');
define('SLEEPING_EMAIL', dirname(__FILE__) . "/sleepMail.dat");//休眠的email
define('SLEEPING_TIME', 1800);//休眠多长时间,以秒为单位
define('FILE_APPEND', 1);
if (!function_exists('file_put_contents')) {
    function file_put_contents($n, $d, $flag = false) {
        $mode = ($flag == FILE_APPEND || strtoupper($flag) == 'FILE_APPEND') ? 'a' : 'w';
        $f = @fopen($n, $mode);
        if ($f === false) {
            return 0;
        } else {
            if (is_array($d)) $d = implode($d);
            $bytesWritten = fwrite($f, $d);
            fclose($f);
            return $bytesWritten;
        }
    }
}
$errorNo = 0;
$errorMsg = '';
$currTime = time();
$unuseMails = array();
//收件人和邮件标题和邮件内容
$to = isset($argv[1]) ? $argv[1] : "" ;
$subject = isset($argv[2]) ? $argv[2] : "";
$mailFile = isset($argv[3]) ? $argv[3] : "" ;
if (__DEBUG__) {
    echo "
file:$mailFile to:$to subject:$subjectrn";
}
if (empty($mailFile) || empty($to) || empty($subject)) {
    $errorNo = 1;
    $errorMsg = "参数不全";
}
//加载不可用的email列表
if (!$errorNo) {
    if (file_exists(SLEEPING_EMAIL)) {
        $sleepMails = file(SLEEPING_EMAIL);
        if (!empty($sleepMails)) {
       
            foreach($sleepMails as $sleepMail) {
                //解析
                if (false !== strpos($sleepMail, '|')) {
                    $tmp = explode('|', $sleepMail);
                    if (isset($tmp[0]) && isset($tmp[1])) {
                        $mail = trim($tmp[0]);
                        $time = trim($tmp[1]);
                       
                        //是否可用
                        if ( ($currTime - $time )< SLEEPING_TIME) {
                            $unuseMails[] = $mail;
                        }
                    }
                }
            }
        }
    }
}
if (!$errorNo) {
    //随机加载smtp服务器和smtp用户名和密码
    $info = file(__PSW_FILE__);
    $len = count($info);
   
    do {
        $rnd = mt_rand(0, $len - 1);
        $line = isset($info[$rnd]) ? $info[$rnd] : "";
       
        if (false !== strpos($line, '|')) {
       
            $tmp = explode('|', $line);
            if (isset($tmp[0]) && isset($tmp[1]) && isset($tmp[2])) {
               
                $smtpServer = trim($tmp[0]);
                $fromMail = trim($tmp[1]);
                $psw = trim($tmp[2]);
                $smtpUserName = substr($fromMail, 0, strrpos($fromMail, '@'));
            }
        }
    }while (in_array($fromMail, $unuseMails));//如果在不可用的列表中,在次加载
   
    if (!isset($smtpServer) || !isset($fromMail) || !isset($psw)) {
        $errorNo = 2;
        $errorMsg = "没找到发件人QQ信箱和密码";
    }
}
if (!$errorNo && __DEBUG__) {
    echo "smtp:$smtpServer from:$fromMail psw:$psw user:$smtpUserNamern";
}
if (!$errorNo) {
    //通过phpmailer连接smtp服务器发信
    require(dirname(__FILE__) . "/phpmailer/class.phpmailer.php");
    require(dirname(__FILE__) . "/phpmailer/class.smtp.php");
    $mail = new PHPMailer();
   
    $body = $mail->getFile($mailFile);
    $body = eregi_replace("[]",'',$body);
   
    //charset
    $mail->CharSet = "GB2312";
   
    //$mail->SMTPDebug = 2;//用于显示具体的smtp错误
   
    $mail->IsSMTP();
    $mail->SMTPAuth = true;
    if ("smtp.qq.com" == trim($smtpServer)) {
        $mail->Username = $fromMail;
    } else {
        $mail->Username = $smtpUserName;
    }
    $mail->Password = $psw;
    $mail->Host = $smtpServer;
   
    $mail->From = $fromMail;
    $mail->FromName = "晴天网络";
   
    $mail->IsHTML(true);
   
    $mail->AddAddress($to);
    $mail->Subject = $subject;
    $mail->Body = $body;
   
    if (!$mail->Send()) {
   
       // echo "Message could not be sent. ";
        $errorNo = 3;
        $errorMsg = $mail->ErrorInfo;
    } else {
        echo "
Send to $to success use $fromMailrn";
        exit;
    }
}
if (3 == $errorNo) {
    //记录信息,该信息地址休眠N分钟
    $content = "$fromMail|" . time() . "rn";//email|当前时间戳
    file_put_contents(SLEEPING_EMAIL, $content, FILE_APPEND);
}
echo "
Error No($errorNo) " . $errorMsg . "rn";
exit;
?>

时间: 2024-08-01 07:24:28

php smtp邮件群发程序源代码的相关文章

jsp 邮件群发 程序代码

jsp 邮件群发 程序代码 public static boolean sendMail(String subject,String body,String to,String content,Address[] ValidUnsentAddresses,boolean isReSend) {   logger.info("始发送邮件*");   boolean result=false;   try {    Security.addProvider(new com.sun.net.

ASP+SMTP完成邮件群发功能

asp+|smtp --><meta http-equiv="Content-Language" content="zh-cn"><TITLE>中国劲网Web(ASP+STMP)邮件群发系统 2004.11.28 版</TITLE><style><!--body { color: #000000; text-decoration: none; font-family: 宋体; font-size: 10pt

详解thinkphp5+swoole实现异步邮件群发(SMTP方式)

本文介绍了thinkphp5+swoole实现异步邮件群发(SMTP方式),分享给大家,具体如下: 1.环境说明 阿里云centos7 thinkphp5.0.11 swoole2.0.8 2.tp实现邮件发送 在项目下建立如下的文件目录: 其中SendMail.php是我们实际调用的发送邮件的文件.以下是主要代码: namespace app\library\utils\mail; use app\library\utils\mail\PhpMailer; use app\library\ut

跪求:Java邮件群发器应用程序

问题描述 Java邮件群发器功能说明:1.批量循环发送邮件2.发送HTML文件,待发送的邮件以htm的格式存放,可以是网络上的htm文件,可以是本地的htm文件3.可以指定发送附件的目录,系统会加载指定目录的全部附件一起发送4.发送邮件以txt文件保存,每行保存一个邮件地址5.可以指定已经发送了的邮件地址列表,以免邮件重发6.可以指定发送邮件是采用什么样的编码7.可以指定发送邮件的服务器,但是有些邮件服务器不支持,最好是自己拱建邮件服务器,个人推荐MagicWinMail8.可以指定每封邮件发送

利用ASP+JMAIL进行邮件群发的新思路

asp+|jmail 利用ASP+JMAIL进行邮件群发的新思路 背景:Email地址存于MSSql一用户信息表中,数量上万.公司自有服务器,集SMTP,POP3,WWW,FTP,MSSql,DNS等多种服务于一身.JMAIL 有MailMerge对象,但是免费版不能用 要求:用ASP+JMAIL,利用公司SMTP向所有用户发送EMAIL 思路:直接读取数据库,多次循环发送,会对本来配置不高的服务器造成很大压力.最好能对EMAIL分批发送,每批发送间隔一段时间,以此来缓解对服务器造成的压力. 实

运用C#实现POP3邮件接收程序

程序 微软的VS.Net开发工具推出已有一段时日了,其中的那门新语言C#也日渐为大家所熟悉并接受.C#作为一门新兴的语言相信具有传统语言不可比拟的优越性,特别是在网络应用方面,开发者更是感觉到了C#的强大功能.所以本文就通过运用C#来实现一个基于POP3协议的邮件接收程序来向大家展示C#网络编程的功能强大,同时也向大家介绍一下基于POP3协议的电子邮件接收原理. 首先我向大家介绍邮件接收的基本原理: 一开始便是客户端与服务器的连接.不过,在客户端连接到服务器之前,注意把端口设为POP3协议默认的

C# SMTP邮件发送

邮件发送在网站应用程序中经常会用到,包括您现在看到的博客,在添加评论后,系统会自动发送邮件通知到我邮箱的,把系统发送邮件的功能整理了下,做了一个客户端Demo,希望对有需要的童鞋有所帮助: 核心代码: 001 using System; 002 using System.Net; 003 using System.Net.Mail; 004 using System.Text; 005   006 namespace HC.Email 007 { 008     /// <summary> 0

C++实现邮件群发的方法_C 语言

本文实例讲述了C++实现邮件群发的方法.分享给大家供大家参考.具体如下: 关于生成随机QQ邮箱不精确的问题,在之后版本打算另写一个采集器插件进行帐号采集,所以,这个软件只用来进行内容发送,邮箱进行随机生成 如果你已经有采集来的QQ号,请复制到SendList.txt 替换内容即可 可以直接复制HTML代码到邮件内容,保存即可.目前邮件内容最大设置为10000字节,如果有增大的必要,欢迎提交留言. 这是我学习后VC编程中涉及到多线程,socket,及一些WINDOWS API的宗合应用 使用说明:

在邮件群发中如何做好网站推广?

随着电子商务的发展,人们的消费观念从传统的消费方式,在向新的消费方式发展,随之而来的网络营销也成为了市场销售的主旋律.邮件群发成为网络营销的一个重大分支,在实际操作中可能有很多的问题需要注意,下面是我们爱博邮件群发系统的一些见解,希望对大家有帮助.如果大家有什么疑问的话. 可以及时联系我们,我们一起探讨解决, 联系方式:021-31604690 . qq 2091506350 . 1. 群发的邮箱地址非常重要.目前网络上有很多出卖邮箱地址的网站,要注意筛选,因为其中好多是自动生成的邮箱地址,根本