这个是HTML的功能!
增加一个文本输入框,把“TYPE”改为“FILE”就行了!
系统会自动给你在旁边加一个“浏览”按钮!
增加一个文本输入框,把“TYPE”改为“FILE”就行了!
系统会自动给你在旁边加一个“浏览”按钮!
解决方案 »
- 请教基于Zend Framework开发的开源项目
- 为什么我的Smarty模板只接受 .tpl 而不接受 .html
- 比较【PHP】,【Java(限于Web应用)】和【Perl】的优缺点
- 页面上有语法错误不报错,而是直接页面无法加载【有图】
- 急:Mediawiki6.0+PHP5+Mysql5.0 服务器配置~期待赐教
- 请教: 批量替换文件中特定字符串
- 如何统计一个字符串在另一个字符串里的出现次数。
- 我公司急聘PHP程序员,要求熟悉Linux,工作地点在南京
- 请LeeMaRS(想做DP杀手的小菜虎)到我发的贴子领分,并非导分,解答请看http://expert.csdn.net/Expert/topic/1432/1432731.xml?temp=3.94555
- 请教:PHP下的事件处理方法
- php有没有服务器级别的全局变量?
- 誰想交php朋友呢?
Date: Mon, 22 May 2000 19:17:29 +0000
From: Someone <[email protected]>
To: Person <[email protected]>
Message-id: <[email protected]>
Content-type: multipart/mixed; boundary="396d983d6b89a"
Subject: Here's the subject --396d983d6b89a
Content-type: text/plain; charset=iso-8859-1
Content-transfer-encoding: 8bitThis is the body of the email.--396d983d6b89a
Content-type: text/html; name=attachment.html
Content-disposition: inline; filename=attachment.html
Content-transfer-encoding: 8bit<html>
<head>
<title>The attachment</title>
</head>
<body>
<h2>This is the attached HTML file</h2>
</body>
</html>--396d983d6b89a-- 前面的7行是邮件的头,其中值得注意的是Content-type头部分。这个头告诉邮件程序电子邮件是由一个以上的部分组成的。不含附件的邮件只有一个部分:消息本身。带附件的电子通常至少由两部分组成:消息和附件。这样,带两个附件的邮件由三部分组成:消息,第一个附件和第二个附件。 带附件的电子邮件的不同部分之间用分界线来分隔。分界线在Content-type头中定义。邮件的每个新部分以两个连字号(--)和分界线开始。最后一个分界线后也有两个连字号,表示这个邮件中没有其它的部分了。 在每个分界线后有一些行,用来告诉邮件程序这个部分的内容的类型。比如,看看上面例子中第一个分界线后面的两行--以Content-type: text/plain开头的行。这些行说明后面的部分是ISO-8859-1字符集的纯文本。跟在第二个分界线后的行告诉邮件程序现在的部分是一个HTML文件,它的名字是"attachment.html"。 Content-disposition这持告诉邮件程序如果可能就以内嵌的方式显示附件。现在新的邮件程序会在消息后显示HTML的内容。如果Content-disposition被设为attachment,那么邮件程序就不会显示HTML文件的内容,而是显示一个连接到文件的图标(或其它的类似的东西)。收件人要看附件的内容,必须点击这个图标。一般情况下,如果附件是一些文本(包含HTML),Content-disposition会被设为inline,这是因为现在大部分邮件程序能够不借助其它浏览器而直接显示附件(文本)的内容。如果附件不是文本(比如图片或其它类似的内容),Content-disposition就设为attachment。 2. 用PHP生成带附件的电子邮件这里一个例子,告诉你如果把一个定义好的HTML文件加为邮件的附件: <?php
# 我们首先写实际的消息内容
$emailBody = "This is text that goes into the body of the email.";# 然后我们要作为附件的HTML文件
$attachment = "<html>
<head>
<title>The attached file</title>
</head>
<body>
<h2>This is the attached HTML file</h2>
</body>
</html>";# 建立在邮件中分隔不同部分的分界线。
# 基本上,分界线可以是任意的字符串。
# 但是重要的一点是确定一个写邮件的人
# 这会随意写出的字符串,所以我们用
# uniqid函数来产生一个随机的字符串。
$boundary = uniqid( "");# 现在我们要建立邮件头。不要忘了插入
# Content-type头来说明这个邮件包含一个或更多的附件。
$headers = "From: [email protected]
Content-type: multipart/mixed; boundary=\"$boundary\"";# 好,现在我们已经有了邮件的所有内容。
# 下一件事是修改邮件的主体。
$emailBody = "--$boundary
Content-type: text/plain; charset=iso-8859-1
Content-transfer-encoding: 8bit$emailBody--$boundary
Content-type: text/html; name=attachment.html
Content-disposition: inline; filename=attachment.html
Content-transfer-encoding: 8bit$attachment--$boundary--";# 现在可以把邮件发出去了
mail( "[email protected]", "The subject", $emailBody, $headers);
?> 3. 把用户上传的文件作为附件你也许会觉得上面的例子难以理解,但下面...。在下面的例子中事情更难了,因为我们要用一个表单让用户上传他们的文件,并把这个文件作为我们要发的邮件的附件。麻烦的是我们不能预先知道文件的MIME类型。在前面的例子中,我们已经知道该它是一个HTML文件,所以给这个附件设置Content-type头是很简单的。在下面的例子中,MIME类型可能是任意的,因为用户可能会上传一个HTML文件,一个PNG文件,一个vCard文件,或者其它的东西。让我们来看看例子:<?php
# 现在我们来生成表单。在产生可以上传文件的表单时,
# 不要忘了把<form>标签的"enctype"属性设为"multipart/form-data".
echo "<form action='$PHP_SELF' enctype='multipart/form-data' method='post'>\n";
echo "<input type='text' name='from'><br>\n";
echo "<input type='text' name='to'><br>\n";
echo "<input type='text' name='subject'><br>\n";
echo "<input type='file' name='attachment'><br>\n";
echo "<textarea name='body'></textarea><br>\n";
echo "<input type='submit' name='send' value='Send'>\n";
echo "</form>\n";# 如果用户已经按了"Send"按钮"
if ($send) {
# 定义分界线
$boundary = uniqid( ""); # 生成邮件头
$headers = "From: $from
Content-type: multipart/mixed; boundary=\"$boundary\""; # 确定上传文件的MIME类型
if ($attachment_type) $mimeType = $attachment_type;
# 如果浏览器没有指定文件的MIME类型,
# 我们可以把它设为"application/unknown".
else $mimeType = "application/unknown"; # 确定文件的名字
$fileName = $attachment_name; # 打开文件
$fp = fopen($attachment, "r");
# 把整个文件读入一个变量
$read = fread($fp, filesize($attachment)); # 好,现在变量$read中保存的是包含整个文件内容的文本块。
# 现在我们要把这个文本块转换成邮件程序可以读懂的格式
# 我们用base64方法把它编码
$read = base64_encode($read); # 现在我们有一个用base64方法编码的长字符串。
# 下一件事是要把这个长字符串切成由每行76个字符组成的小块
$read = chunk_split($read); # 现在我们可以建立邮件的主体
$body = "--$boundary
Content-type: text/plain; charset=iso-8859-1
Content-transfer-encoding: 8bit$body--$boundary
Content-type: $mimeType; name=$fileName
Content-disposition: attachment; filename=$fileName
Content-transfer-encoding: base64$read--$boundary--"; # 发送邮件
mail($to, $subject, $body, $headers);
}
?>
这就是全部内容。如果你不能很好地理解上面的例子,我的建议是给你自己发送几个带附件的邮件,然后仔细研究邮件的源代码。