I almost finished this php mailer. It creates a file for every smtp server then it splits the recipients file to the number of smtp servers, and at last it should open every smtp file, connect to the smtp in it and assign a recipients file. The code as it is now only connects to the first smtp. Please help.
<?phperror_reporting(E_ALL); $hosts = "smtp.txt";$emails = "list.txt";$hostscount = count(file($hosts));$emailscount = count(file($emails));$splitnum = (int)($emailscount / $hostscount);$handle = fopen("smtp.txt", "r");$handle2 = fopen("list.txt", "r");$currentfile = 1;$output = FALSE;$output2 = FALSE;// MESSAGE DETAILS$fromemail = "";$fromname = "";$replyto = "";$mydomain = "";$subject = "";// PUT EVERY SMTP IN A DIFFERENT FILEif ($hosts) { while (!feof($handle)) { $buffer = fgets($handle, 4096); if (!$output) { $output = fopen("s-" . ($currentfile++), "w"); $lines = 0; } fwrite($output, $buffer); if (strrchr($buffer,"\n")) { $complete = TRUE; ++$lines; if ($lines == "1") { fclose($output); $output = FALSE; } } else { $complete = FALSE; } } fclose($handle); if ($output) { if (!$complete) { fwrite($output,"\n"); } fclose($output); }}// SPLIT RECIPIENTS LIST TO THE NUMBER OF SMTP SERVERS$currentfile2 = 1;if ($emails) { while (!feof($handle2)) { $buffer2 = fgets($handle2, 4096); if (!$output2) { $output2 = fopen("m-" . ($currentfile2++), "w"); $lines2 = 0; } fwrite($output2, $buffer2); if (strrchr($buffer2,"\n")) { $complete2 = TRUE; ++$lines2; if ($lines2 == $splitnum) { fclose($output2); $output2 = FALSE; } } else { $complete2 = FALSE; } } fclose($handle2); if ($output2) { if (!$complete2) { fwrite($output2,"\n"); } fclose($output2); }}// ASSIGN A RECIPIENTS FILE TO EVERY SMTP SERVER (FILE)$currentfile3 = 1;$currentfile4 = 1;foreach (file("s-" . ($currentfile3++)) as $line) {foreach (file("m-" . ($currentfile4++)) as $line2) {$info2 = explode(",", $line2);$email = $info2[0];$firstname = $info2[1];$lastname = $info2[2];$message = "";$info = explode(",", $line);$hostname = $info[0];$username = $info[1];$password = $info[2];$connect = fsockopen($hostname, 25); fputs($connect, "EHLO $mydomain\r\n"); fputs($connect, "AUTH LOGIN\r\n"); fputs($connect, base64_encode($username)."\r\n");fputs($connect, base64_encode($password)."\r\n");fputs($connect, "MAIL FROM: $fromemail\r\n");fputs($connect, "RCPT TO: $email\r\n"); fputs($connect, "DATA\r\n"); fputs($connect, "MIME-Version: 1.0\r\n");fputs($connect, "Content-Type: text/html\r\n");fputs($connect, "Content-Transfer-Encoding: 8bit\r\n");fputs($connect, "To: $email\r\n");fputs($connect, "From: \"$fromname\" <$fromemail>\r\n");fputs($connect, "Subject: $subject\r\n\r\n"); fputs($connect, "$message\r\n"); fputs($connect, ".\r\n"); fputs($connect, "QUIT\r\n"); }}?>
Kinda hard to read with all that long fopen while not eof stuff.
With file_get_contents and explode you can make an array from a \n file in two lines.
What exactly are you having problems with?
nanharbison
Have you tried echoing out your results to see if everything is working?
jebbie635
ASKER
Don't need to echo, the results are the created files and test emails received. It connects to only one server.
I started with Experts Exchange in 2004 and it's been a mainstay of my professional computing life since. It helped me launch a career as a programmer / Oracle data analyst
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
With file_get_contents and explode you can make an array from a \n file in two lines.
What exactly are you having problems with?