Php mass mailing (phpmailer sends qq mails)

Source: Internet
Author: User
Tags explode require sleep trim

* @ Author ray
* @ Since 2009-08-07

There must be many smtp mail accounts, otherwise they will be treated as spam by the qq server.
2. Sleep properly.

The smtp. dat file format is
Smtp.163.com | sss@163.com | password
Smtp.sina.com | www@sina.com | password www.111cn.net
The program randomly extracts a connection and sends an email. If the email fails to be sent, the email address is saved to sleepmail. send after dat sleep for 30 minutes (this is a modification made to fail to send after connecting to the smtp server multiple times ).
*/

The code is as follows: Copy code
Define ('_ debug _', false );
Define ('_ PS tutorial w_file _', dirname (_ file _). '/smtp. dat ');
Define ('Sleeping _ email ', dirname (_ file _). "/sleepmail. dat"); // dormant email
Define ('Sleeping _ time', 1800); // how long the sleep lasts, in seconds
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 ();
// Recipient and email title and content
$ 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: $ subject ";
}
If (empty ($ mailfile) | empty ($ to) | empty ($ subject )){
$ Errorno = 1;
$ Errormsg = "incomplete parameters ";
}
// Load the list of unavailable emails
If (! $ Errorno ){
If (file_exists (sleeping_email )){
$ Sleepmails = file (sleeping_email );
If (! Empty ($ sleepmails )){
       
Foreach ($ sleepmails as $ sleepmail ){
// Resolution
If (false! = Strpos ($ sleepmail, '| ')){
$ Tmp = explode ('|', $ sleepmail );
If (isset ($ tmp [0]) & isset ($ tmp [1]) {
$ Mail = trim ($ tmp [0]);
$ Time = trim ($ tmp [1]);
                       
// Available or not
If ($ currtime-$ time) <sleeping_time ){
$ Unusemails [] = $ mail;
                        }
                    }
                }
            }
        }
    }
}
If (! $ Errorno ){
// Load the smtp server and smtp username and password randomly
$ 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 the list is unavailable
   
If (! Isset ($ smtpserver) |! Isset ($ frommail) |! Isset ($ psw )){
$ Errorno = 2;
$ Errormsg = "the sender's qq mailbox and password are not found ";
    }
}
If (! $ Errorno & _ debug __){
Echo "smtp: $ smtpserver from: $ frommail psw: $ psw user: $ smtpusername ";
}
If (! $ Errorno ){
// Use phpmailer to connect to the smtp server for Mail
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; // www.111cn.net is used to display specific smtp errors.
   
$ 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 = "Sunday Network ";
   
$ Mail-> ishtml (true );
   
$ Mail-> addaddress ($ );
$ Mail-> subject = $ subject;
$ Mail-> body = $ body;
   
If (! $ Mail-> send ()){
   
// Echo "message cocould not be sent .";
$ Errorno = 3;
$ Errormsg = $ mail-> errorinfo;
} Else {
Echo"
Send to $ to success use $ frommail ";
Exit;
    }
}
If (3 = $ errorno ){
// Record information. The address is dormant for n minutes.
$ Content = "$ frommail |". time (). ""; // email | CURRENT TIMESTAMP
File_put_contents (sleeping_email, $ content, file_append );
}
Echo"
Error no ($ errorno) ". $ errormsg ."";
Exit;

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.