Witam,
Jest taki kod do wysyłania maili. Maile do zarejestrowanych użytkowników, żaden marketing. W pętli ma wysyłać pojedynczo maile na kolejny adres. Pętla pobiera pokolei adresy, np. echo je wyświetla, ale jak zrobię wysyłanie, to wysyła tylko na pierwszy adres. Ma ktoś pomysł co może być przyczyną?
mail.php:
define('EMAIL', ' ... '); //Adres nadawcy
define('MAIL_NAME', ' ... '); //Nazwa nadawcy
define('MAIL_EMAIL', ' ... '); //Adres nadawcy
define('MAIL_REPLY', ' ... '); //Adres odpowiedni
define('MAIL_USERNAME', ' ... '); //Adres konta wysyłania
define('MAIL_PASSWORD', ' ... '); //Hasło konta
define('MAIL_SMTP', true); //Ustawienia smtp
define('MAIL_HOST', 'ssl://smtp.gmail.com'); //Host wysyłania
define('MAIL_PORT', 465); //Port przekierowania
define('MAIL_ENCRYPTION', 'ssl'); //Sposób szyfrowania
define('MAIL_AUTH', true); //Autoryzacja
define('MAIL_DEBUG_MODE', 0); //Tryb debugowania
MailSender.php:
class MailSender
{
public function __construct()
{
}
public function send($adresat, $templateId, $params = array(), $replacement = array(), $subject)
{
if (strpos($adresat, ",") !== false) { $adresat = explode(",", $adresat); }
if (strpos($adresat, ";") !== false) { $adresat = explode(";", $adresat); }
$row = new stdClass();
$row->subject = $subject;
$row->name = '';
$row->content = '##TEXT##';
if (!empty($params['toTitle'])) { $row->subject = $params['toTitle'] . " " . $row->subject; }
$plainText = $row->content;
include "PHPMailer.php";
$mail = new PHPMailer;
if (MAIL_SMTP) {
$mail->IsSMTP();
$mail->SMTPDebug = MAIL_DEBUG_MODE;
$mail->SMTPAuth = MAIL_AUTH;
if (defined(MAIL_ENCRYPTION)) {
$mail->SMTPSecure = MAIL_ENCRYPTION;
}
$mail->Host = MAIL_HOST;
$mail->Username = MAIL_USERNAME;
$mail->Password = MAIL_PASSWORD;
$mail->Port = MAIL_PORT;
} else {
$mail->IsMail();
}
$mail->SetFrom(MAIL_EMAIL, MAIL_NAME);
if (!empty($params['replyTo'])) {
$mail->AddReplyTo($params['replyTo']);
} else {
$mail->AddReplyTo(MAIL_REPLY);
}
$mail->CharSet = "utf-8";
$mailBody = '';
if (is_array($replacement)) {
foreach ($replacement as $key => $item) {
if (substr($item, 0, 4) == "http") {
$item = "<a href='" . $item . "'>" . $item . "</a>";
}
$mailBody = str_replace("##" . $key . "##", $item, $mailBody);
$plainText = str_replace("##" . $key . "##", $item, $plainText);
$row->subject = str_replace("##" . $key . "##", $item, $row->subject);
}
}
$mail->Subject = $row->subject;
if (isset($params['text']) && $params['text'] == 1) {
$mail->IsHTML(false);
$plainText = str_replace(" ", " ", $plainText);
$plainText = str_replace("ó", "?", $plainText);
$mail->Body = strip_tags($plainText);
} else {
$mail->IsHTML(true);
$mail->MsgHTML($mailBody, "img");
}
$allOk = true;
if (is_array($adresat)) {
foreach ($adresat as $item) {
$mail->AddAddress($item);
if (!@$mail->Send()) {
$allOk = false;
}
$mail->ClearAddresses();
}
} else {
$mail->AddAddress($adresat);
if (!$mail->Send()) {
$allOk = false;
} else {
}
}
return $allOk;
}
}
plik uruchamiany cron-em
require_once("include.inc.php");
$conf['db_host'] = ...
...
$email_array = ... // tablica adresów mailowych
$subject = ...
$mail_text = ...
include "mail.php";
include "MailSender.php";
if( ... ) { // cron sprawdza, czy jest polecenie wysłania maili
for($j=0;$j<5;$j++) { // dla przykładu 5
if(isset($email_array[$j])) {
$email = $email_array[$j]; // adres mailowy, łańcuch znaków, adresy są
$this_mail = new MailSender();
$this_mail->send($email, 0, array('text'=>1), array('TEXT' => $mail_text), $subject);
unset($this_mail);
}
}
}
Dzięki