- 论坛徽章:
- 0
|
用PHP写了一个能发送附件的邮件页面,可以正常收到邮件,但是附件却不能正常接收,大小为0K
代码如下:
<?php
$to="****";//收件人
$title="test";//主题
$subject="附件测试";//内容
$from="ONE_FAX";
$filename="add.gif";//附件
$file="./image/$filename";
// 定义分界线
$boundary = uniqid( "" );
$headers = "Content-type: multipart/mixed; boundary= $boundary\r\n";
$headers .= "From: $from\r\n";
// 打开文件
$fp = fopen($file, "r" );
// 把整个文件读入一个变量
$read = fread($fp, filesize($file));
//我们用base64方法把它编码
$read = base64_encode($read);
//把这个长字符串切成由每行76个字符组成的小块
$read = chunk_split($read);
//现在我们可以建立邮件的主体
$body = "--$boundary
Content-type: text/plain; charset=iso-8859-1
Content-transfer-encoding: 8bit
$subject
--$boundary
Content-type: image/gif; name=$filename
Content-disposition: attachment; filename=$filename
Content-transfer-encoding: base64
$read
--$boundary--";
//发送邮件
if(mail($to, $title,$body,$headers))
print "OK! the mail $from --- $to has been send<br>";
else
print "fail to send mail <br>";
?>
说明:
1、附件文件为服务器上的文件,位于网页所在目录的/image/下
2、输出整个邮件后得到的内容为下:
--48c8d18e743a4
Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: 8bit 附件测试
--48c8d18e743a4
Content-type: image/gif; name=add.gif Content-disposition: attachment; filename=add.gif Content-transfer-encoding: base64 R0lGODlhEAAQANU/AMPa/4OQu6/Y//r9/5CTudTd/rzW/3h5pNPp/+Xz/8bW/87a/8Li/8fk//b6 //D4/+v1/8zl/73f/+Lw/7jd/+Lq9tfr/93t/+Hv/8zm/3J0naXC6sne/+Xv+sfR/8rY//b4+9ft /3uKuJ2s0YyPs93o9rvE+Kqu+OLr+JWcwOHt+Orz+tDh/4Gr3+32/5ylx2SEwWhsnt3r+M/g/7Ov xLG30cHU/+/2+tLh+qK85Hp8pZCRuIqf0QCpVP///////yH5BAEAAD8ALAAAAAAQABAAAAaWwJ+w 18sZj5uAcPkjVp7PEuolYjZ7vqzWR4O1rsRwb+B4DGqxmEYsLrsSONPpsCT6ePg8D+GhD8dlEAkY FxYILDp1PQ56eRkziUIjIA+ChIYRDRyRPy83EI14DJtLLysJE4UIGQ0MEgCcKR0ToTwUsEspKqqs rhQCBrEyIautEr/AnAQFzAsLHx8KNjbBSyQ72NnaBAdBADs=
--48c8d18e743a4--
按照对邮件的理解,我的这个邮件已经加载了附件,但是不知道为什么,我收到的邮件总是不能打开附件
[ 本帖最后由 linych 于 2008-9-11 16:49 编辑 ] |
|