基本上,我正在尝试创建批量电子邮件应用程序。
我允许上传包含几封电子邮件的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
)
)
答案 0 :(得分: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
是一个两级数组,因此它的元素是不是字符串,你必须迭代它的元素才能得到实际的电子邮件地址。 / p>
此外,如果$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);
}