PHP Mailer Вы должны указать хотя бы один адрес электронной почты

require_once('phpmailer/class.phpmailer.php'); function smtpmailer($to,$from,$subject,$body) { define('GUSER', 'xxx'); // Gmail username define('GPWD', 'xxx'); // Gmail password printf("list:".$to); $recipient = array ($to); global $error; $mail = new PHPMailer(); // create a new object $mail->IsSMTP(); // enable SMTP $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only $mail->SMTPAuth = true; // authentication enabled $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail $mail->Host = 'smtp.gmail.com'; $mail->Port = 465; $mail->Username = GUSER; $mail->Password = GPWD; $mail->SetFrom($from, "Bank Negara"); $mail->Subject = $subject; $mail->Body = $body; foreach ($recipient as $email){ $mail->AddAddress($email); } if(!$mail->Send()) { $error = 'Mail error: '.$mail->ErrorInfo; return false; } else { $error = 'Message sent!'; return true; } } 

Я передаю строку, которая хранит адрес электронной почты в таком формате:

 'email1@yahoo.com','email2@gmail.com' 

Когда я передаю это

 $recipient = array ($to); 

У меня ошибка. Недопустимый адрес: Но когда я передаю строковый вывод прямо следующим образом:

 $recipient = array ('email1@yahoo.com','email2@gmail.com'); 

Он работает нормально. Как передать my $ в String в этот массив $ recipient.

 $addresses = "'email1@yahoo.com','email2@gmail.com'"; $to = array($addresses); 

не собирается магически создавать массив с двумя элементами в нем. То, что вы получите, это элемент SINGLE в массиве, например

 $to = array( 0 => "'email1@yahoo.com','email2@gmail.com'" ); 

Однако, делая

 $to = explode(',', $addresses); 

WILL даст вам массив из двух элементов:

 $to = array ( 0 => "...yahoo", 1 => "...gmail" );