0

所以基本上,我正在尝试创建一个批量电子邮件应用程序。

我允许上传带有几封电子邮件的 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
        )

)
4

1 回答 1

2

将循环更改为:

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);
}
于 2013-10-23T05:53:10.893 回答