2014-01-11 3 views
0

Я пытаюсь сохранить несколько задач и отправить несколько писем для каждого пользователя. Мой код в ближайшее время выглядит следующим образом:Phpmailer Multiple Mail

<?php 
//Save All 
foreach($_POST['decode'] as $dcode){ 

$sec = mysql_query("SELECT owner,mcode FROM members WHERE mcode='$dcode' ORDER BY id ASC"); 
while($list = mysql_fetch_array($sec)){$mcode=$list[mcode];$owner=$list[owner];}   

if (mysql_query ("INSERT INTO tasks (tcode,adder,tdt,title,mcode,subject) 
values ('$tcode','$adder','$tdt','$title','$mcode','$subject')")){ 

     echo $owner.' done.<br>';header ("refresh: 5; url=members.php"); 

     //Send info 
     include("scripts/class.phpmailer.php"); 

     //To who 
     $sec = mysql_query("SELECT name,em FROM members WHERE mcode='$mcode' ORDER BY id ASC"); 
     while($list = mysql_fetch_array($sec)){$name = $list[name];$em = $list[em];} 
     //Sender 
     $sec = mysql_query("SELECT owner FROM members WHERE mcode='$owner' ORDER BY id ASC"); 
     while($list = mysql_fetch_array($sec)){$owner = $list[owner];} 

     $mail= new PHPMailer(); 
     $mail->AddAddress($em , $name); 
     $mail->Subject=$owner."has send mail"; 
     $mail->Body="content"; 
     $mail->IsSMTP(); 
     $mail->Host="host.host.com"; 
     $mail->SMTPAuth=true; 
     $mail->Username="username"; 
     $mail->Password="pass"; 
     $mail->IsHTML(true); 
     $mail->From="sendermail"; 
     $mail->FromName="Sender"; 
     $mail->Port="587"; 
     $done=$mail->Send(); 

     // Check Mail 
     if(!$done){echo "Error! Mail not send";}else{echo "Mail send";}   

}else{echo "Not Saved";}  
}//Save All 
?> 

Это экономит ваши задачи. И отправляет одно письмо. Но я не могу отправить несколько писем для каждой задачи.

PHPMailer посылает сообщение об ошибке: Не удается объявить класс Я попробовал этот путь для этой ошибки:

if(class_exists('PHPMailer') != true){$mail= new PHPMailer();} 

И это говорит вызов функции члена AddAddress() И ив попробовал этот путь :

$mail->ClearAddresses(); 

И я думаю, что я помещаю коды в неправильные области. Могу ли вы, пожалуйста, помогите мне исправить это. Я искал «стек» и попробовал несколько методов. Но они не работают на моем. Я думаю, что о команде foreach.

+0

mysql_ * устарел, и у вас возникли проблемы с sql-инъекциями в вашем коде. Они находятся вне сферы вашего ответа, но, пожалуйста, исправьте их, прежде чем использовать это. Вместо этого используйте mysqli/PDO – Zarathuztra

+0

@ Zarazthuztra благодарит за замечательного человека. Но я новичок в кодировании. Могу ли вы отправить мне источник для объяснений. –

+0

Абсолютно чувак! Вот документы на mysqli http://us2.php.net/manual/en/book.mysqli.php. Его можно использовать процедурно, точно так же, как mysql_ *, или объектно-ориентированным способом (который я рекомендую учиться в любом случае). Так что это действительно не так уж и отличается от того, к чему вы привыкли, только некоторые незначительные хитрости. Что касается SQL-инъекции, просто используйте подготовленные команды mysqli. Бросьте мне строку, если у вас есть вопросы о них, но документы довольно хороши. – Zarathuztra

ответ

2
//Sender 
$sec = mysql_query("SELECT owner FROM members WHERE mcode='$owner' ORDER BY id ASC"); 
while($list = mysql_fetch_array($sec)) 
{ 
    $owner = $list[owner]; 
} 

$mail= new PHPMailer(); 
$mail->Body="content"; 
$mail->Subject=$owner."has send mail"; 
$mail->IsSMTP(); 
$mail->Host="host.host.com"; 
$mail->SMTPAuth=true; 
$mail->Username="username"; 
$mail->Password="pass"; 
$mail->IsHTML(true); 
$mail->From="sendermail"; 
$mail->FromName="Sender"; 
$mail->Port="587"; 

//To who 
$sec = mysql_query("SELECT name,em FROM members WHERE mcode='$mcode' ORDER BY id ASC"); 
while($list = mysql_fetch_assoc($sec)) 
{ 
    $email = $list['em']; 
    $mail->ClearAddresses(); 
    $mail->AddAddress($email); 
    $mail->Send(); 
} 
+0

Хотя я верю, что этот ответ правильный, почему бы не улучшить его и объясните, почему это работает и что ОП делает неправильно? – Zarathuztra

+0

Потому что вы создаете экземпляр в цикле. Создание экземпляра в цикле подобно отправке различной почты каждый раз. –

+0

@WaqarAlamgir, как я должен заполнить петлю для «за»? –

Смежные вопросы