繁体   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