I just upgraded from PHP mail()
to PHPMailer and I love it, but I need some help. I had my mailer setup to send an email for each address in a database to maintain privacy in the to
and bcc
areas so no one knew who else was getting these emails.
After upgrading to PHPMailer my script works almost flawlessly but now when the email sends every email address in my database is listed in the to
section. I would like to change it to where it is one email per address again.
Any ideas?
Full code:
require('/home/jollyrogerpcs/public_html/settings/globalVariables.php'); // Require login variables
require('/home/jollyrogerpcs/public_html/settings/mysqli_connect.php'); // Require mysqli connections
require('/home/jollyrogerpcs/public_html/scripts/php/class.phpmailer.php'); // Require PHPMailer script
require('/home/jollyrogerpcs/public_html/scripts/php/class.pop3.php'); // Require PHPMailer script
require('/home/jollyrogerpcs/public_html/scripts/php/class.smtp.php'); // Require PHPMailer script
mysqli_select_db($conn,"newsletterlist");
$query = "SELECT * FROM newsletterusers";
$result = mysqli_query($conn, $query);
$subject = str_ireplace(array("\r", "\n", '%0A', '%0D'), '', $_POST['subject']);
$message = str_ireplace(array("\r", "\n", '%0A', '%0D'), '', $_POST['body']);
// Begin PHPMailer SMTP Authentication
$mail = new PHPMailer();
$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "localhost"; // specify main and backup server
//$mail->Host = "a2plcpnl0099.prod.iad2.secureserver.net"; // specify main and backup server
//$mail->Port = 465; // set the SMTP port for the server
//$mail->SMTPAuth = true; // turn on SMTP authentication
//$mail->Username = "jesse@example.com"; // SMTP username
//$mail->Password = "*******"; // SMTP password
// Begin PHP Mailer Headers
$mail->From = "jesse@example.com";
$mail->FromName = "Jesse Elser | Jolly Roger PCS Owner/Operator";
$mail->AddReplyTo("jesse@example.com", "Jesse Elser | Jolly Roger PCS Owner/Operator");
$mail->Subject = $subject;
$mail->IsHTML(true); // set email format to HTML
if (!$result) exit("The query did not succeded");
else {
while ($row = mysqli_fetch_array($result)) {
$to = $row['email'];
$mail->AddAddress($to);
$encodedTo = rtrim(strtr(base64_encode($to), '+/', '-_'), '=');
date_default_timezone_set("America/Chicago");
$date = date("m/d/Y h:i:sa");
$date .= " CST";
$mail->Body ='<!DOCTYPE HTML>';
$mail->Body .='<body style="padding: 0; margin: 0; background-color: #000; color: #fff; text-align: center; font-family: verdana;">';
$mail->Body .='<div id="container" style="width: 90%; margin: 0 auto; text-align: left; background-color: #121212;">';
$mail->Body .='<div id="header" style="border-bottom: 1px solid #ff6400;">';
$mail->Body .='<img src="http://example.com/images/main/logo.png" width="100%">';
$mail->Body .='</div>';
$mail->Body .='<div id="subject" style="background-color: #121212; text-align: center;">';
$mail->Body .='<h1 style="color: #ff6400; margin: 0;">'.$subject.'</h1>';
$mail->Body .='</div>';
$mail->Body .='<div id="message" style="background-color: #232323; color: #fff; padding: 10px;">';
$mail->Body .= $message;
$mail->Body .='</div>';
$mail->Body .='<div id="footer" style="background-color: #121212; padding: 10px;">';
$mail->Body .='<a href="http://example.com" style="text-decoration: none; color: #ff6400;">Visit Our Site</a> | Thanks for subscribing to our newsletter! | <a href="http://example.com/scripts/php/unsubscribe.php?id='.$encodedTo.'" style="text-decoration: none; color: #ff6400;">Unsubscribe</a> <br> E-mail sent: ';
$mail->Body .= $date;
$mail->Body .='</div>';
$mail->Body .='</body>';
}
}
mysqli_close($conn);
if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
header('Location: http://example.com/newsletter.php');