Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.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中的多邮件附件_Php_Email_Attachment - Fatal编程技术网

PHP中的多邮件附件

PHP中的多邮件附件,php,email,attachment,Php,Email,Attachment,我在想我能不能告诉你一些事情 我在我的网站上有一个邮件脚本,我可以用它发送带有单个附件的电子邮件。发送一个附件就可以了 我希望能够发送一封带有多个附件的电子邮件,但我在这样做时遇到了问题 这是我在表格中的文件选择框: <input type="file" name="attachment[]" id="attachment[]" multiple onfocus="this.style.backgroundColor='#e7e7e7'" onblur="this.style.backgr

我在想我能不能告诉你一些事情

我在我的网站上有一个邮件脚本,我可以用它发送带有单个附件的电子邮件。发送一个附件就可以了

我希望能够发送一封带有多个附件的电子邮件,但我在这样做时遇到了问题

这是我在表格中的文件选择框:

<input type="file" name="attachment[]" id="attachment[]" multiple onfocus="this.style.backgroundColor='#e7e7e7'" onblur="this.style.backgroundColor='#ffffff'"/>
第150行是这样的:

foreach ($file as $files)
我只是不知道我会错在哪里。如果我没有foreach循环,它不会发送或者只发送第一个文件

我知道我可以使用像phpmailer这样的东西,但我希望自己能够做到这一点。我只是看不出我错在哪里

我在家里的本地apache上尝试了这个脚本,没有邮寄,它可以上传和移动多个文件,就像在我的主机上一样。当我添加邮件选项时,一切都变成了梨形


如果您回顾您的代码,将非常感谢您提供的任何帮助

foreach ($_FILES['attachment']['name'] as $file)
$file
已经是一个文件名。它不是数组。正如我提到的

我在你的代码中看到,你试图获取上传文件的内容。为此,您可以执行以下操作:

foreach($_FILES['attachment']['tmp_name'] as $eachFile){
    $content = chunk_split(base64_encode(file_get_contents($file)));
    $uid = md5(uniqid(time()));

    $header = "From: ".$from."\r\n";
    $header .= "Reply-To: ".$from."\r\n";
    $header .= "Bcc: ".$bcc."\r\n";
    $header .= "MIME-Version: 1.0\r\n";

    $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
    $header .= "This is a multi-part message in MIME format. \r\n";

    $header .= "--".$uid."\r\n";
    $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    $header .= $message1."\r\n";

    $header .= "--".$uid."\r\n";
    $header .= "Content-Type: ".$file_type."; name=\"".$file_name."\"\r\n";
    $header .= "Content-Transfer-Encoding: base64\r\n";
    $header .= "Content-Disposition: attachment; filename=\"".$file_name."\"\r\n\r\n";
    $header .= $content."\r\n";
}

$files
variableHi中没有任何内容,我将如何在需要它的上下文中使用它。我假设第150行的foreach循环需要来自第一个foreach的信息来处理它。你需要解决这个问题。一次检查一个if,然后一次处理一个if,比如:检查尺寸,如果确定,再做一个if,直到满足所有要求。下一步是,循环并构建您的响应。最后,回应它。你最终会得到一个组织得更好的代码。嗨,ariefbayu,谢谢你尝试回答这个问题。我试过你的改变,但它说tmp_的名字是空的。此外,国际单项体育联合会不是问题所在。我已经检查了一遍又一遍,不给我任何问题确实不是问题。它只是,在读代码时给了我火炉般的攻击:|。此外,修复了代码片段LOL。有相当多的假设。我只是不知道如何解决它。使用您的解决方案会给出foreach错误或空tmp_名称错误。我只是想不通。
foreach ($_FILES['attachment']['name'] as $file)
foreach($_FILES['attachment']['tmp_name'] as $eachFile){
    $content = chunk_split(base64_encode(file_get_contents($file)));
    $uid = md5(uniqid(time()));

    $header = "From: ".$from."\r\n";
    $header .= "Reply-To: ".$from."\r\n";
    $header .= "Bcc: ".$bcc."\r\n";
    $header .= "MIME-Version: 1.0\r\n";

    $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
    $header .= "This is a multi-part message in MIME format. \r\n";

    $header .= "--".$uid."\r\n";
    $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    $header .= $message1."\r\n";

    $header .= "--".$uid."\r\n";
    $header .= "Content-Type: ".$file_type."; name=\"".$file_name."\"\r\n";
    $header .= "Content-Transfer-Encoding: base64\r\n";
    $header .= "Content-Disposition: attachment; filename=\"".$file_name."\"\r\n\r\n";
    $header .= $content."\r\n";
}