PHPMailer wysyła maila tylko na pierwszy adres

0

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("&nbsp;", " ", $plainText);
            $plainText = str_replace("&oacute;", "?", $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

1

A próbowałeś obserwować co dostajesz przy wywołaniu send() ? Bo teraz po cichu wygłuszasz błędy, ignorujesz zwrotki - a tam na 99% masz wszystko jak na dłoni podane.

0

No przecież. Drugi raz PHPMailer się includował.

Dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1