

电子邮件简介,win2003安装配置smtp和pop3的方法,发送邮件举例,带附件的邮件发送与接收例子
21.1 电子邮件的原理
1) email简介,使用要有ISP提供的账户或信箱,收发,访问,格式user@server.com
2) 电子邮件的原理:发送和接收要遵循SMTP,POP3等协议以确保在不同系统间传输,SMTP负责发,POP3用于收
21.2 系统配置需求(SMTP和POP3服务器安装配置)
1) windows2003下安装系统自统自带的pop3和smtp服务
win2003下:控制面板——添加和删除程序——添加/删除windows组件,
勾选电子邮件服务。 //这步是装pop3,
应用程序服务器——详细信息——勾选IIS——详细信息——勾先SMTP Service //这步是smtp了
2)配置smtp服务器
开始——所有程序——管理工具——IIS服务管理器,展开节点,展开 默认SMTP服务器,
右击域——新建——域——别名——输入域名(输入tmoon.com)——完成
3)配置pop3服务器,pop协议第3个版本
管理工具——pop3服务,展开所有,点右边的新域,输入域名(输入sina.com),注:在pop3创建域sina.com时会自动在smtp下也创建这个
左边树中左边单击sina.com域——添加邮箱,输入邮箱名和密码 //这里是建的邮箱用户名和密码
21.3 应用PHP发送和接收电子邮件
1) 发送一个简单的电子邮件
a. 先在index.php页中设计一个表单填写发件人,收件人,邮件主题,邮件内容
b. 通过POST提交到send.php页处理,处理代码:
$from=$_POST[from]; //获取发件人地址
$to=$_POST[to]; //得到收件人地址
$title=$_POST[title]; //得到邮件标题
$content=$_POST[content]; //得到邮件内容
$headers = "MIME-Version: 1.0\r\n"; //发送文件头信息,MIME邮件的版本为1.0
$headers .= "Content-type:text/html; charset=gb2312\r\n"; //文件头内容为text/html方式,支持GB2312字符
$headers .= "To: $to\r\n"; //文件头的收人地址
$headers .= "Form:$from\r\n"; //文件头要加入的发件人地址
if(@mail($to,$title, $content, $headers)) { //使用mail函数发送邮件
echo "<script>alert('邮件发送成功!');window.location.href='index.php';</script>";
}
else {
echo "<script>alert('邮件发送失败');history.back();</script>"; //操作失败返回这句
}
2) 发送带附件的电子邮件
a. 同上的index.php页再增加了一个浏览文件表单控件,用以上传附件
同样通过POST方式提交到send.php处理,代码:
if($_POST[submit]!="" { //如果不为空表提交有表单信息
$subject=$_POST[subject]; //得到邮件标题
$mailbody=$_POST[mailbody]; //得到邮件内容
$envelope["from"]= $_POST[fromuser]; //得到发件人
$part1["type"] = TYPEMULTIPART; //设置服务器类型
$part1["subtype"] = "mixed"; //设置服务器端口
$part2["type"] = TYPETEXT; //设置服务器类型为文件型
$part2["subtype"] = "plain";
$part2["encoding"] = ENCBINARY; //设置邮件编码格式
$part2["contents.data"] = "$mailbody\n\n\n\t"; //设置邮件存储位置
$filename = $_FILES['upfile']['name']; //获取附件名称
if ($filename!="") { //如果附件不为空
$file=$_FILES['upfile']'tmp_name']; //为附件命名
$fp = @fopen($file, "r"); //以只读方式打开文件
$contents = @fread($fp, @filesize($file)); //读取该文件及文件大小
@fclose($fp); //关闭该文件
if($_FILES['upfile']['type']) { //如果文件类型不为空
$mimeType = $_FILES['upfile']['type']; //获取文件类型
} else {
$mimeType ="application/unknown"; //否则说明未打开该类型的文件
}
$part3["type"] = TYPEAPPLICATION;
$part3["encoding"] = ENCBINARY;
$part3["subtype"]= $mimeType; //获取邮件类型
$part3["description"]= $filename;
$part3["contents.data"]= $contents;
}
body[1] = $part1;
body[2] = $part2;
if($filename!="") {
$body[3] = $part3;
}
$message=imap_mail_compose($envelope, $body);
list($msgheader,$msgbody)=split("\r\n\r\n",$message,2);
if(@imap_mail($_POST[touser],$subject,$msgbody,$msgheader)) {
echo "<script>alert('邮件发送成功!');history.back();</script>";
} else {
echo "<script>alert('邮件发送失败!');history.back();</script>";
}
}
3) 接收带附件的电子邮件
a. 在index.php中设计一个表格用以显示接收邮件的主题,发件人,发件时间,大小
代码段一:
$check = imap_check($mbox);
$sum=$check->Nmsgs;
print_r(imap_search($mbox,"SEEN"));
if($sum<=0) {
代码段二:
} else {
if($_GET[page]=="" || is_numeric($_GET[page]==false)) {
$page=1;
} else {
$page=$_GET[page];
}
$pagesize=10;
if($sum%$pagesize==0) {
$totalpage=$sum/$pagesize;
}else{
$totalpage=ceil($sum/$pagesize);
}
$frompage=($page-1)*$pagesize+1;
$topage=$frompage+$pagesize;
if(($sum-$topage)<0) {
$topage=$sum+1;
}
for ($i+$frompage;$i<$topage;$i++) {
$obj=imap_headerinfo($mbox,$i);
段三:
if(strtolower(substr($obj->Subject,0,10))==strtolower("=?gb2312?B"))
echo base64_decode(substr($obj->Subject,11,(strlen($obj->Subject)-13)));
else
echo $obj->Subject;
其它:
<?php echo (obj->fromaddress); ?>
<?php
$array=getdate(strtotime($obj->date));
echo $array[year]."-".$array[mon]."-".$array[mday]." ".$array[hours].":".$array[minutes];
?>
<?php
$size=$obj->Size;
if($size>=1024) {
echo number_fromat(($size/1024),2)." KB";
}
elseif($size>1024*1024) {
echo number_format(($size/(1024*1024)),2)." M";
}
elseif($size>1024*1024*1024) {
echo number_format(($size/(1024*1024*1024)),2)." G";
}
elseif($size<1024) {
echo ($size)." 字节";
}
?>
<?php } ?>
<?php
if($page>=2) {
?>
<?php
}
if($totalpage<=4 {
for($j=1;$j<=$tatalpage;$j++) {
echo "<a href=lookmail.php?page=".$j." class=a1>".$j."</a> ";
}
}else{
for($j=1;$<=4;$j++) {
echo "<a href=lookmail.php?page=".$j." class=a1>".$j."</a> ";
}
?>
。。。。。。。。。
down.php页代码
session_start();
$id=$_GET[id];
$hostname=$_SESSION[host];
$username=$_SESSION[user];
$username=$_SESSION[pwd];
if(!$mbox=@imap_open("$hostname","$username","$userpwd")) {
echo "<script>alert('请通过正确的途径登录本系统!');window.location.href='login.php';</script>";
exit;
}
$structure=imap_fetchstructure($mbox,$id);
$array=$structure->parts;
if(($array[1]->dparameters[0]->value)!="") {
$filename=$array[1]->daprameters[0]->value)!="")
}else{
$filename=$array[1]->description;
}
if(strtolower(substr($filename,0,10))==strtolower("=?gb2312?B"))
$filename=base64_decode(substr($filename,11,(strlen($filename)-13)));
header("Content-type:application/octet-stream");
header("Accept-ranges:bytes");
header("Accept-length:100");
header("Content-Disposition:attachment;filename=".$filename."");
$text=imap_fetchbody($mbox,$id,2);
echo imap_base64($text);
imap_close($mbox);
exit;