![](/img/trans.png)
[英]Why I am getting copy() expects parameter 2 to be a valid path in PHP
[英]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.