我有一个电子邮件附件脚本,它可以工作并向我发送一个具有正确名称的文件...但是文件为 0 字节。
这是 PHP:
$namer = $_FILES["cv_upload"]["name"];
$file ="/home2/deserul7/public_html/nkaccounting/"."temp_cv/"."".$namer."";
$contenttype = $_FILES["cv_upload"]['type'];
$handle = fopen($file, "rb");
$file_size = filesize($file);
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);
$eol = PHP_EOL;
// Basic headers
$header = "From: NK Accounting <sal@desertsunstudio.com>".$eol;
$header .= "MIME-Version: 1.0rn";
$header .= "Content-Type: multipart/mixed; boundary="".$uid.""";
// Put everything else in $message
$message = "--".$uid.$eol;
$message .= "Content-Type: text/html; charset=ISO-8859-1".$eol;
$message .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
$message .= $msg2."<br><br><br>".$eol;
$message .= "--".$uid.$eol;
$message .= "Content-Type: ".$contenttype."; name="".$name.""".$eol;
$message .= "Content-Transfer-Encoding: base64".$eol;
$message .= "Content-Disposition: attachment; filename="".$name.""".$eol;
$message .= $content.$eol;
$message .= "--".$uid."--";
if (@mail($ouremail, $subject2, $message, $header)){
echo "sent";
}
当我将其发送到我的 Gmail 时,它工作正常,但是当我尝试通过桌面中的邮件应用程序获取它时,它的字节为 0 字节......请帮忙
附件标题和附件内容之间应该有一个空行。您那里只有一个$eol
,因此没有空行(您对带有$msg2
的部分正确执行了该行(。将Content-Disposition
行更改为:
$message .= "Content-Disposition: attachment; filename="".$name.""".$eol.$eol;
如果您使用 here-string 而不是串联,您可以更轻松地看到类似内容。
$message = <<<EOF
--$uid
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
$msg2<br><br><br>
--$uid
Content-Type: $contenttype; name="$name"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="$name"
$content
--$uid
EOF;