簡體   English   中英

為什么我收到一條錯誤,指出“mail()期望參數1是字符串”?

[英]Why am I getting an error stating that “mail() expects parameter 1 to be string”?

基本上,我正在嘗試創建批量電子郵件應用程序。

我允許上傳包含幾封電子郵件的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] => email1@foo.com
            [1] => email2@foo.com
            [2] => email3@foo.com
        )

)

將你的循環改為:

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

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

實際上問題是你的$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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM