2013-10-23 11 views
0

所以基本上,我試圖創建一個批量電子郵件應用程序。爲什麼我得到一個錯誤,指出「mail()期望參數1是字符串」?

我允許上傳帶有幾封電子郵件的CSV文件,一旦我點擊發送,他們將全部被處理併發送。

我將CSV文件解析爲一個數組,並且我使用一個foreach循環來處理每個電子郵件地址併發送它。

例如,這就是所謂的csv陣列已被填充後:

foreach($csv as $email_address) 
{ 
    $sendHeaders = "headers here"; 
    $sendSubject = "subject here"; 
    $sendText = "long email text here"; 

    mail($email_address,$sendSubject,$sendText,$sendHeaders); 
} 

雖然,我似乎得到的錯誤:

Warning: mail() expects parameter 1 to be string 

它指出,錯誤的是上線54,這是我的mail()函數被調用的行。

有沒有人有任何想法,爲什麼發生這種情況?


編輯:

這裏是我的陣列的的var_dump如果有人後:

Array 
(
    [0] => Array 
     (
      [0] => [email protected] 
      [1] => [email protected] 
      [2] => [email protected] 
     ) 

) 
+1

什麼是您的CSV陣列($ CSV)是什麼樣子? – janenz00

+0

什麼是csv數組的樣子? – 2013-10-23 05:50:46

+0

我想你可能需要添加csv數據,才能得到有意義的答案。另外,'echo $ email_address;'的輸出是什麼,在'mail'之前立即調用? – enhzflep

回答

2

你的循環更改爲:

​​

其實這個問題是您的$csv是一個兩級陣列,因此它的元素是而不是字符串,您必須迭代其元素以獲取實際的電子郵件地址。

此外,如果$sendHeaders和/或$sendSubject總是相同,您可以在循環前移動它們,以免每次都設置它們。

最後,作爲@Dagon建議,如果$csv始終只有一個元素,你可以簡單地做:

foreach($csv[0] as $email_address) { 
    $sendHeaders = "headers here"; 
    $sendSubject = "subject here"; 
    $sendText = "long email text here"; 

    mail($email_address,$sendSubject,$sendText,$sendHeaders); 
} 
+0

Ahhhh!太好了,現在我明白了。最後完成工作。是的,這兩個變量每次都是相同的,所以我會把它們放在循環之外。謝謝! – Fizzix

+0

@fizzix歡迎您:)如果我的回答幫助您隨時上傳和/或接受它! –

+0

已經Upvoted了,雖然我不得不再等5分鐘才能接受哈哈。 – Fizzix

相關問題