Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我会得到一个错误的声明“我的;mail()要求参数1为字符串“;?_Php_Email_Csv - Fatal编程技术网

Php 为什么我会得到一个错误的声明“我的;mail()要求参数1为字符串“;?

Php 为什么我会得到一个错误的声明“我的;mail()要求参数1为字符串“;?,php,email,csv,Php,Email,Csv,所以基本上,我正在尝试创建一个批量电子邮件应用程序 我允许上传一个CSV文件和一些电子邮件,一旦我点击发送它们都将被处理和发送 我将CSV文件解析为一个数组,并使用foreach循环来处理每个电子邮件地址并发送它 例如,在填充csv数组后调用: foreach($csv as $email_address) { $sendHeaders = "headers here"; $sendSubject = "subject here"; $sendText = "long emai

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

我允许上传一个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行,这是调用my
mail()
函数的那一行

有人知道为什么会这样吗


编辑:

下面是我的数组的var_转储(如果有人在后面):

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);
}

您的csv数组($csv)是什么样子的?csv数组是什么样子的?我认为您可能需要添加csv数据,然后才能得到有意义的答案。还有,
echo$email\u address的输出是什么
,紧接着在
mail
之前调用?错误消息完全是自我解释的,这意味着您的
$email\u地址
不是
字符串
。是的,这是一个多维数组,希望您不在共享主机上:-)啊哈!太好了,现在我明白了。最后效果很好。是的,这两个变量每次都是相同的,因此我将把它们放在循环之外。谢谢@fizzix不客气:)如果我的回答能帮助你自由投票和/或接受它!虽然我要再等5分钟才能接受哈哈,但我已经投票了。在这种情况下,是的,但是谁知道
$csv
是否会有更多的元素?我更喜欢一个更通用的解决方案,但我会综合您的建议:)我更喜欢开销最小的解决方案。:-)