2014-01-08 34 views
0

在獲取Swift「setTo」以接受來自MySQL查詢的數組時遇到了麻煩。下面的代碼只發送給結果集/列表中的最後一個人。已經閱讀了至少一堆相關的線程和Swift中的文檔,但他們似乎只是展示瞭如何對代碼進行硬編碼或做出了很多假設。希望得到一個更完整的例子,它可以幫助那些不是百分百使用Php數組並傳遞給Swift的人。麻煩從PHP/MySQL查詢傳遞數組到SwiftMailer

[...php connection code...] 
// query email addresses 
$sql = 'select emailaddress from customerlist;'; 
$result = mysql_query($sql); 
if($result === FALSE) { 
    die(mysql_error()); // ToDo: better error handling 
} 

// create array from results 
$cDistribArray = array(); 
while($rowEmail = mysql_fetch_assoc($result)) { 
    $cDistribArray = $rowEmail['emailaddress']; 
} 

[edit: issue was code above, CORRECTED below, thanks Sven] 
// create array from results 
$cDistribArray = array(); 
while($rowEmail = mysql_fetch_assoc($result)) { 
    $cDistribArray[] = $rowEmail['emailaddress']; 
} 


[...skip to Swift message create code...] 

$message = Swift_Message::newInstance('Subject') 
    ->setFrom(array('[email protected]' => 'Sender Name')) 
    ->setTo($cDistribArray) 
    ->setBody($cEmailBody,'text/html'); 

我敢肯定這件事情很明顯,我做錯了與陣列但閱讀關於如何創建陣列和斯威夫特和收件箱已滿測試消息,只有有當我多個地址的許多文章後硬代碼......卡住了!希望提供任何援助。

+0

除了*'功能被棄用,你會錯過'emailaddress'後的''''。 –

+0

在模擬中得到了糾正,但這不是問題,結果集恢復正常,因爲我可以回顯個別結果並全部顯示。問題似乎是1.)讓Swift「看到」數組中的所有行,或者,不知何故,我沒有將所有行傳遞給數組? – TransitDataHead

回答

1

這將覆蓋每一個結果與當前提取的郵件地址:

$cDistribArray = $rowEmail['emailaddress']; 

你可能想是這樣的:從說明明顯有關`mysql_

$cDistribArray[] = $rowEmail['emailaddress']; // Add new mail address to the array 
+0

我知道這是我失蹤的骨頭 - 謝謝! – TransitDataHead

0

發送電子郵件的代碼在while循環之外。它只會發送一封電子郵件到最後一條記錄。你試過這個嗎?

// create array from results 
$cDistribArray = array(); 
while($rowEmail = mysql_fetch_assoc($result)) { 
    $cDistribArray = $rowEmail['emailaddress']; 

    [...skip to Swift message create code...] 

    $message = Swift_Message::newInstance('Subject') 
     ->setFrom(array('[email protected]' => 'Sender Name')) 
     ->setTo($cDistribArray) 
     ->setBody($cEmailBody,'text/html'); 

} 
+0

你好,謝謝你的回覆。根據我對Swift文檔的閱讀,setTo不能在循環中使用,如果不想讓任何人看到其他電子郵件,那麼可以使用另一個集合,但這不是問題。我可以試試這個,但它似乎是在循環內創建消息對象的多個實例。 – TransitDataHead

+0

確認,我嘗試了這種方法,結果沒有變化(即結果集有多行,但電子郵件只發送到最後一行的內容)。感謝您的嘗試! – TransitDataHead

+0

Ach,足夠公平 - 我沒有意識到這一點,認爲你只是有一個基本的控制流錯誤! – Mathew