Php 发送带有附件的电子邮件(问题是文件大小为0k)
亲爱的朋友们:, 我的文件附件有问题,我正在为我的项目使用带有附件的电子邮件功能,我在该邮件中附加了file.xls,但在邮件中我无法获取该文件的值,它显示为0k。 但该文件在本地有一些数据,但它不工作,而运行该电子邮件功能,附件有0k大小,谁能帮我。。。 我的代码在下面Php 发送带有附件的电子邮件(问题是文件大小为0k),php,excel,email,Php,Excel,Email,亲爱的朋友们:, 我的文件附件有问题,我正在为我的项目使用带有附件的电子邮件功能,我在该邮件中附加了file.xls,但在邮件中我无法获取该文件的值,它显示为0k。 但该文件在本地有一些数据,但它不工作,而运行该电子邮件功能,附件有0k大小,谁能帮我。。。 我的代码在下面 $filename = "test.xls"; $path = $_SERVER['DOCUMENT_ROOT']."/path/to/Documents/"; $file = $path.$file
$filename = "test.xls";
$path = $_SERVER['DOCUMENT_ROOT']."/path/to/Documents/";
$file = $path.$filename;
$to = "example@test.com";
$subject = 'Repairs List Report';
$message = "Please find the attachment file for repairs list of Last week..."; //strip_tags($_POST['message']);
$attachment = chunk_split(base64_encode(file_get_contents($file)));
//$filename = $_FILES['file']['name'];
$boundary =md5(date('r', time()));
$headers = "From: test@example.com\r\nReply-To: example@test.com";
$headers .= "MIME-Version: 1.0";
$message="This is a multi-part message in MIME format. --_1_$boundary Content-Type: multipart/alternative; boundary=\"_2_$boundary\" --_2_$boundary Content-Type: text/plain; charset=\"iso-8859-1\" Content-Transfer-Encoding: 7bit $message --_2_$boundary-- --_1_$boundary Content-Type: application/vnd.ms-excel; name=\"$filename\" Content-Transfer-Encoding: base64 Content-Disposition: attachment $attachment --_1_$boundary--";
mail($to, $subject, $message, $headers);
首先要做的是输出$message,看看它是否确实生成了一封有效的MIME格式的电子邮件。我们不能确定,只要看看你的代码。。但有一件事:
$headers = "From: test@example.com\r\nReply-To: example@test.com";
$headers.= "MIME-Version: 1.0";
应该是:
$headers = "From: test@example.com\r\nReply-To: example@test.com\r\n";
$headers.= "MIME-Version: 1.0";
你忘了把所有的换行符都放在你的留言里了:
$body ="This is a multi-part message in MIME format. (preamble)\r\n";
$body.="--_1_$boundary\r\n";
$body.="Content-Type: multipart/alternative; boundary=\"_2_$boundary\"\r\n";
$body.="--_2_$boundary\r\n";
$body.="Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
$body.="Content-Transfer-Encoding: 7bit\r\n";
$body.="\r\n";
$body.="$message\r\n";
$body.="--_2_$boundary--\r\n";
$body.="--_1_$boundary\r\n";
$body.="Content-Type: application/vnd.ms-excel; name=\"$filename\"\r\n";
$body.="Content-Transfer-Encoding: base64\r\n";
$body.="Content-Disposition: attachment\r\n";
$body.="\r\n";
$body.="$attachment\r\n";
$body.="--_1_$boundary--";
mail($to, $subject, $body, $headers);
我不确定我是否错过了什么,但你可以从这个开始。最后,您可以使用我制作的一个类,它简化了mime电子邮件的制作。您能告诉我们您正在使用的代码吗?另外,您的意思是“收到的附件为0 kb”吗?我不太清楚,请详细说明你的问题。任何一种情况都可能发生。您收到或未收到您的电子邮件文件。这种情况很奇怪。请发布您的代码。请尝试更改
$file
的权限。PHP能读吗?