最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
php imap收邮件类代码
时间:2022-06-24 22:08:19 编辑:袖梨 来源:一聚教程网
-- php教程myadmin sql dump
-- version 2.11.6
-- http://www.phpmyadmin.net
--
-- host: localhost
-- generation time: jun 29, 2010 at 09:27 am
-- server version: 5.0.51
-- php version: 5.2.6
set sql_mode="no_auto_value_on_zero";
/*!40101 set @old_character_set_client=@@character_set_client */;
/*!40101 set @old_character_set_results=@@character_set_results */;
/*!40101 set @old_collation_connection=@@collation_connection */;
/*!40101 set names utf8 */;
--
-- database: `test`
--
-- --------------------------------------------------------
--
-- table structure for table `maillist`
--
create table if not exists `maillist` (
`id` int(11) not null auto_increment,
`title` text collate utf8_unicode_ci not null,
`content` mediumtext collate utf8_unicode_ci not null,
`senduser` varchar(50) collate utf8_unicode_ci not null,
`sendmail` varchar(200) collate utf8_unicode_ci not null,
`sendtime` int(11) not null,
`accept_email` varchar(200) collate utf8_unicode_ci not null,
`cc_email` varchar(200) collate utf8_unicode_ci not null,
`bcc_email` varchar(200) collate utf8_unicode_ci not null,
`msessage_id` varchar(200) collate utf8_unicode_ci not null,
`msgno` int(11) not null comment '邮件的序号,为0表示已经下载结束',
`is_download` tinyint(4) not null default '0',
primary key (`id`)
) engine=myisam default charset=utf8 collate=utf8_unicode_ci auto_increment=1 ;
--
-- dumping data for table `maillist`
--
-- --------------------------------------------------------
--
-- table structure for table `mail_account`
--
create table if not exists `mail_account` (
`id` int(11) not null auto_increment,
`username` varchar(100) not null,
`password` varchar(50) not null,
`emailaddress` varchar(100) not null,
`mailserver` varchar(50) not null,
`servertype` varchar(10) not null,
`port` varchar(10) not null,
primary key (`id`)
) engine=myisam default charset=latin1 auto_increment=1 ;
--
-- dumping data for table `mail_account`
--
-- --------------------------------------------------------
--
-- table structure for table `mail_attach`
--
create table if not exists `mail_attach` (
`id` int(11) not null auto_increment,
`mail_id` int(11) not null,
`filename` varchar(200) collate utf8_unicode_ci not null,
`filename_tmp` varchar(200) collate utf8_unicode_ci not null,
`download_time` datetime not null,
primary key (`id`)
) engine=myisam default charset=utf8 collate=utf8_unicode_ci auto_increment=1 ;
--
-- dumping data for table `mail_attach`
--
config.php文件
$path = "d:/phpnow/htdocs/attach/";
$urlpath = "http://localhost/attach/";
?>
list.php邮箱列表页面
header("content-type: text/html; charset=utf-8");
header('expires: '.date('d,d m y h:i:s',mktime(0,0,0,1,1,2000)).' gmt');
header('last-modified:'.gmdate('d,d m y h:i:s').' gmt');
header('cache-control: private, no-cache,must-revalidate');
header('pragma: no-cache');
include_once 'dbconfig.php';
$dblink = mysql教程_connect("localhost",$dbuser,$dbpasswd);
mysql_query("set names 'utf8'");
mysql_select_db("test");
$emailaddress = $_request['email'];
?>
收邮件 | 发邮件 |
$title | ";$senduser | ";$senddate | ";查看 | ";查看 | ";$msgflag | ";
receuv.php收邮件页面
set_time_limit(0);
include_once 'imap.php';
include_once 'dbconfig.php';
$dblink = mysql_connect("localhost",$dbuser,$dbpasswd);
mysql_query("set names 'utf8'");
mysql_select_db("test");
$emailaddress = $_request['email'];
$sql = "select * from mail_account where emailaddress='".$emailaddress."'";
$rlt = mysql_query($sql);
$row = mysql_fetch_array($rlt);
$username = $row['username'];
$password = $row['password'];
$emailaddress = $row['emailaddress'];
$mailserver = $row['mailserver'];
$servertype = $row['servertype'];
$port = $row['port'];
$mail = new imap($username,$password,$emailaddress,$mailserver,$servertype,$port,false);
$mail->open();
$mailnum = $mail->getmaillist();
for($i=1;$i<=$mailnum;$i++){
$mailheader = $mail->head($i);
//echo "
";print_r($mailheader);echo "";
//echo "
";
$msgno = $mailheader['id'];
$size = $mailheader['size'];
$messageid = $mailheader['message_id'];
$udate = $mailheader['udate'];
$subject = addslashes($mailheader['subject']);
$charset = $mailheader['charset'];
$sendmail = $mailheader['from'];
$senduser = addslashes($mailheader['frompersonal']);
if($senduser==''){
$senduser = $sendmail;
}
$fromcharset = $mailheader['fromcharset'];
if($fromcharset=="default"){
$fromcharset = "gb2312";
}
if($charset=="default"){
$charset = "gb2312";
}
$csql = "select * from maillist where msessage_id='".$messageid."' and sendtime='".$udate."'";
$crlt = mysql_query($csql);
if(mysql_num_rows($crlt)==0){
$subject = iconv($charset,"utf-8",$subject);
$senduser = iconv($fromcharset,"utf-8",$senduser);
$sql = "insert into maillist set title='".$subject."',senduser='".$senduser."',sendmail='".$sendmail."',
sendtime='".$udate."',msessage_id='".$messageid."',msgno='".$msgno."',accept_email='".$emailaddress."'";
mysql_query($sql);
}else{
$sql = "update maillist set msgno='".$msgno."' where msessage_id='".$messageid."' and sendtime='".$udate."'";
mysql_query($sql);
}
}
$mail->close();
header("location:list.php?email=".$emailaddress);
?>
read_mail.php读取邮件页面
include_once 'dbconfig.php';
$msessage_id = $_request['msessage_id'];
$udate = $_request['udate'];
$msgno = $_request['msgno'];
$dblink = mysql_connect("localhost",$dbuser,$dbpasswd);
mysql_query("set names 'utf8'");
mysql_select_db("test");
$email = $_request['email'];
?>
echo "返回收件箱
";
$sql = "select * from maillist where sendtime='".$udate."' and msessage_id='".$msessage_id."'";
$rlt = mysql_query($sql);
$row = mysql_fetch_array($rlt);
$mailid = $row['id'];
$title = stripslashes($row['title']);
$senduser = stripslashes($row['senduser']);
$sendmail = stripslashes($row['sendmail']);
$senddate = date("y-m-d h:i:s",$udate+3600*8);
echo "主题:".$title."
";
echo "发件人:".$senduser."<".$sendmail.">
";
echo "发件时间:".$senddate."
";
?>
getmailbody.php页面代码
set_time_limit(0);
header("content-type: text/html; charset=utf-8");
include_once 'imap.php';
include_once 'dbconfig.php';
$dblink = mysql_connect("localhost",$dbuser,$dbpasswd);
mysql_query("set names 'utf8'");
mysql_select_db("test");
$msessage_id = $_request['msessage_id'];
$udate = $_request['udate'];
$msgno = $_request['msgno'];
$emailaddress = $_request['email'];
$sql = "select id,is_download from maillist where sendtime='".$udate."' and msessage_id='".$msessage_id."'";
$rlt = mysql_query($sql);
$row = mysql_fetch_array($rlt);
$is_download = $row['is_download'];
$mail_id = $row['id'];
if($is_download==0){
$d = 1;
$sql = "select * from mail_account where emailaddress='".$emailaddress."'";
$rlt = mysql_query($sql);
$row = mysql_fetch_array($rlt);
$username = $row['username'];
$password = $row['password'];
$emailaddress = $row['emailaddress'];
$mailserver = $row['mailserver'];
$servertype = $row['servertype'];
$port = $row['port'];
$mail = new imap($username,$password,$emailaddress,$mailserver,$servertype,$port,false);
$mail->open();
$mail->settype();
$mail->fetch_structure($msgno);
$attacharr = $mail->getallattachment($msgno);
$i = 1;
$inlineattach = array();
if(!empty($attacharr)){
foreach ($attacharr as $rows){
$filename = $rows['filename'];
$details = $rows['details'];
$attachtype = $rows["attachtype"];
$filesize = $rows["filesize"];
$inlineid = $rows['inline_id'];
$downloadname = $mail->deliverattach($filename,$details,$path,$i);
if($attachtype=="inline"){
$inlineattach[$i-1]["filename"] = $filename;
$inlineattach[$i-1]["downloadname"] = $downloadname;
$inlineattach[$i-1]["filesize"] = $filesize;
$inlineattach[$i-1]["attachtype"] = $attachtype;
$inlineattach[$i-1]["inline_id"] = $inlineid;
}
$isql = "insert into mail_attach set mail_id='".$mail_id."',filename='".$filename."',
filename_tmp='".$downloadname."',download_time=now()";
mysql_query($isql);
$i++;
}
}
$content = $mail->getbody($msgno);
$content = $mail->replaceimg($inlineattach,$content);
$sql = "update maillist set content='".addslashes($content)."',is_download='".$d."' where sendtime='".$udate."' and msessage_id='".$msessage_id."'";
mysql_query($sql);
if($d){
while(true){
if($mail->deletemails($msgno)){
if($mail->emptydeletebox()){
$sql = "update maillist set msgno=0 where sendtime='".$udate."' and msessage_id='".$msessage_id."'";
mysql_query($sql);
$sql = "select id from maillist where msgno<>0 order by msgno asc";
$rlt = mysql_query($sql);
$i = 1;
while ($row = mysql_fetch_array($rlt)){
$id = $row['id'];
$usql = "update maillist set msgno=".$i." where id='".$id."'";
mysql_query($usql);
$i++;
}
break;
}
}
}
}
$mail->close();
}
$sql = "select * from maillist where sendtime='".$udate."' and msessage_id='".$msessage_id."'";
$rlt = mysql_query($sql);
$row = mysql_fetch_array($rlt);
$content = $row['content'];
$asql = "select * from mail_attach where mail_id='".$mail_id."'";
$arlt = mysql_query($asql);
if(mysql_num_rows($arlt)!=0){
echo "附件:";
while ($arow = mysql_fetch_array($arlt)){
$filename = $arow['filename'];
$filename_tmp = $arow['filename_tmp'];
echo strtolower($filename)." ";
echo "查看
";
}
}
echo $content;
?>
/**
*+----------------------------------------------------------------------------------------------------+
*| imap message class - recevie mailbox by imap |
*| |
*| author: tiger zhang |
*| mailto: [email protected] |
*| |
*| |
*| (c) copyright 2010, tiger zhang, all rights reseverd |
*+----------------------------------------------------------------------------------------------------+
**
*/
class imap{
var $server='';
var $username='';
var $password='';
var $marubox='';
var $email='';
var $linkserver;//email stream
var $error;
var $mailnum = 0;
var $partsary = array();
var $data_types; // (array)(string) various message part types
var $encoding_types; // (array)(string) various encoding types
var $structure; // (array)(object) contains the complete body structure
var $pid; // (array)(array)(str) part id
var $file_type; // (array)(array)(str) mime type
var $disposition; // (array)(array)(str) inline | attachment
var $fsize; // (array)(array)(int) part size in bytes
var $encoding; // (array)(array)(str) message encoding
var $fname; // (array)(array)(str) original file name
var $inline_id; // (array)(array)(str) string containing the id for multipart/related
var $has_attachments; // (array)(array)(bool)
var $file_code; // (array)(array)(str) charset
function imap($username,$password,$emailaddress,$mailserver='localhost',$servertype='pop',$port='110',$ssl = false){
if($servertype=='imap')
{
if($port=='') $port='143';
$strconnect='{'.$mailserver.':'.$port. '}inbox';
}
else
{
$strconnect='{'.$mailserver.':'.$port. '/pop3'.($ssl ? "/ssl" : "").'}inbox';
}
$this->server = $strconnect;
$this->username = $username;
$this->password = $password;
$this->email = $emailaddress;
}
function open(){
//$this->linkserver = @imap_open($this->mailbox,$this->username,$this->password);
$this->linkserver=@imap_open($this->server,$this->username,$this->password) or die("connecting to mail server,refresh");
if(!$this->linkserver)
{
echo "error: connecting to mail server,refresh";
exit;
}
}
function checkopen(){
if(imap_ping($this->linkserver) === false){
$this->error = 'imap_open的连接错误:'.imap_last_error();
return false;
}else{
$this->error = 'ok';
return true;
}
}
function nd(){
$checkresult = imap_check($this->linkserver);
$nummsgs = $checkresult->nmsgs;
$date = $checkresult->date;
$checkreturn[] = $nummsgs;
$checkreturn[] = $date;
return $checkreturn;
}
function getmsgno($messageid){
return imap_uid($this->linkserver,$messageid);
}
/**
* 获取邮件总数
*
*/
function getmaillist(){
$checkresult = imap_check($this->linkserver);
$nummsgs = $checkresult->nmsgs;
return $nummsgs;
}
/**
* 获取邮件头内容
* @param unknown_type $id
* @param unknown_type $all
* @param unknown_type $several
* @return array
(
[id] => 4
[size] => 1697
[message_id] =>
[udate] => 1276687275
[subject] => 测试
[charset] => gbk
[topersonal] => test
[tocharset] => gbk
[to] => [email protected]
[frompersonal] => 五月的饼干屋
[fromcharset] => gbk
[from] => [email protected]
)
*/
function head($id = '',$allhead=false,$all = false,$several = array()){
if($all == true){
$checkreturn = imap::nd();
$nummsgs = $checkreturn[0];
for($i=0;$i<$nummsgs;$i++){
$head_array[$i]['id'] = $i+1;
$head = imap_header($this->linkserver,$i+1);
if($head->udate == ''){
$head_array[$i]['udate'] = '';
}else{
$head_array[$i]['udate'] = $head->udate;
}
if($head->subject == ''){
$head_array[$i]['subject'] = '';
}else{
$head_array[$i]['subject'] = $head->subject;
$analyze_charset = imap_mime_header_decode($head_array[$i]['subject']);
//echo "
".print_r($analyze_charset);echo "";
$head_array[$i]['subject'] = $analyze_charset[0]->text;
}
if($head->to == ''){
$head_array[$i]['to'] == '';
}else{
$to = $head->to;
$to = $to[0]->mailbox.'@'.$to[0]->host;
$head_array[$i]['to'] = $to;
$analyze_charset = imap_mime_header_decode($head_array[$i]['to']);
$head_array[$i]['to'] = $analyze_charset[0]->text;
}
if($head->from == ''){
$head_array[$i]['personal'] == '';
$head_array[$i]['from'] == '';
}else{
$from = $head->from;
$head_array[$i]['personal'] = $from[0]->personal;
$analyze_charset = imap_mime_header_decode($head_array[$i]['personal']);
$head_array[$i]['personal'] = $analyze_charset[0]->text;
$fromaddress = $from[0]->mailbox.'@'.$from[0]->host;
$head_array[$i]['from'] = $fromaddress;
$analyze_charset = imap_mime_header_decode($head_array[$i]['from']);
$head_array[$i]['from'] = $analyze_charset[0]->text;
}
}
return $head_array;
}
if(count($several) > 0){
$num = count($several);
for($i=0;$i<$num;$i++){
$head_array[$i]['id'] = $several[$i];
$head = imap_header($this->linkserver,$several[$i]);
if($head->udate == ''){
$head_array[$i]['udate'] = '';
}else{
$head_array[$i]['udate'] = $head->udate;
}
if($head->subject == ''){
$head_array[$i]['subject'] = '';
}else{
$head_array[$i]['subject'] = $head->subject;
$analyze_charset = imap_mime_header_decode($head_array[$i]['subject']);
$head_array[$i]['subject'] = $analyze_charset[0]->text;
}
if($head->to == ''){
$head_array[$i]['to'] == '';
}else{
$to = $head->to;
$to = $to[0]->mailbox.'@'.$to[0]->host;
$head_array[$i]['to'] = $to;
$analyze_charset = imap_mime_header_decode($head_array[$i]['to']);
$head_array[$i]['to'] = $analyze_charset[0]->text;
}
if($head->from == ''){
$head_array[$i]['personal'] == '';
$head_array[$i]['from'] == '';
}else{
$from = $head->from;
$head_array[$i]['personal'] = $from[0]->personal;
$analyze_charset = imap_mime_header_decode($head_array[$i]['personal']);
$head_array[$i]['personal'] = $analyze_charset[0]->text;
$fromaddress = $from[0]->mailbox.'@'.$from[0]->host;
$head_array[$i]['from'] = $fromaddress;
$analyze_charset = imap_mime_header_decode($head_array[$i]['from']);
$head_array[$i]['from'] = $analyze_charset[0]->text;
}
}
return $head_array;
}
$head = imap_header($this->linkserver,$id);
if($allhead){
return $head;
}
$head_array['id'] = $id;
$head_array['size'] = $head->size;
if($head->message_id == ''){
$head_array['message_id'] = '';
}else{
$head_array['message_id'] = $head->message_id;
}
if($head->udate == ''){
$head_array['udate'] = '';
}else{
$head_array['udate'] = $head->udate;
}
if($head->subject == ''){
$head_array['subject'] = '';
}else{
$head_array['subject'] = $head->subject;
$analyze_charset = imap_mime_header_decode($head_array['subject']);
$head_array['charset'] = $analyze_charset[0]->charset;
$head_array['subject'] = $analyze_charset[0]->text;
}
if($head->to == ''){
$head_array['topersonal'] == '';
$head_array['tocharset'] == '';
$head_array['to'] == '';
}else{
$to = $head->to;
$head_array['topersonal'] = $to[0]->personal;
$analyze_charset = imap_mime_header_decode($head_array['topersonal']);
$head_array['topersonal'] = $analyze_charset[0]->text;
$head_array['tocharset'] = $analyze_charset[0]->charset;
$to = $to[0]->mailbox.'@'.$to[0]->host;
$head_array['to'] = $to;
$analyze_charset = imap_mime_header_decode($head_array['to']);
$head_array['to'] = $analyze_charset[0]->text;
}
if($head->reply_to == ''){
}
if($head->from == ''){
$head_array['frompersonal'] == '';
$head_array['fromcharset'] == '';
$head_array['from'] == '';
}else{
$from = $head->from;
$head_array['frompersonal'] = $from[0]->personal;
$analyze_charset = imap_mime_header_decode($head_array['frompersonal']);
$head_array['frompersonal'] = $analyze_charset[0]->text;
$head_array['fromcharset'] = $analyze_charset[0]->charset;
$fromaddress = $from[0]->mailbox.'@'.$from[0]->host;
$head_array['from'] = $fromaddress;
$analyze_charset = imap_mime_header_decode($head_array['from']);
$head_array['from'] = $analyze_charset[0]->text;
}
return $head_array;
}
function analyze_body($id){
$structure = imap_fetchstructure($this->linkserver,$id);
return $structure;
}
/**
* 设置code和filetype
*
*/
function settype()
{
$this->data_types = array();
$this->data_types[0] = 'text';
$this->data_types[1] = 'multipart';
$this->data_types[2] = 'message';
$this->data_types[3] = 'application';
$this->data_types[4] = 'audio';
$this->data_types[5] = 'image';
$this->data_types[6] = 'video';
$this->data_types[7] = 'other';
$this->encoding_types = array();
$this->encoding_types[0] = '7bit';
$this->encoding_types[1] = '8bit';
$this->encoding_types[2] = 'binary';
$this->encoding_types[3] = 'base64';
$this->encoding_types[4] = 'quoted-printable';
$this->encoding_types[5] = 'other';
return;
}
/**
* * 遍历structure取出所有的相关信息
*
* @param unknown_type $mid
* @param unknown_type $sub_part
* @param unknown_type $sub_pid
* @param unknown_type $n
* @param unknown_type $is_sub_part
* @param unknown_type $skip_part
* @return unknown
*+----------------------------------------------------------------------------------------------------+
*| imap message scanner - scans information provided by imap_fetchstructure() |
*| |
*| author: richard york |
*| mailto:richy at smilingsouls.net |
*| http://www.smilingsouls.net |
*| modified by:tiger zhang(2010-6-20) |
*| |
*| (c) copyright 2004, richard york, all rights reseverd |
*+----------------------------------------------------------------------------------------------------+
**
*/
function fetch_structure($mid, $sub_part = null, $sub_pid = null, $n = 0, $is_sub_part = false, $skip_part = false){
if (!is_array($sub_part))
{
$this->structure[$mid] = imap_fetchstructure($this->linkserver, $mid);
}
if (isset($this->structure[$mid]->parts) || is_array($sub_part))
{
if ($is_sub_part == false)
{
$parts = $this->structure[$mid]->parts;
}
else
{
$parts = $sub_part;
$n++;
}
for($p = 0, $i = 1; $p < count($parts); $n++, $p++, $i++)
{
// skip the following...
// skip multipart/mixed!
// skip subsequent multipart/alternative if this part is message/rfc822
// skip multipart/related
$ftype = (empty($parts[$p]->type))? $this->data_types[0].'/'.strtolower($parts[$p]->subtype) : $this->data_types[$parts[$p]->type].'/'.strtolower($parts[$p]->subtype);
$encoding = (empty($parts[$p]->encoding))? $this->encoding_types[0] : $this->encoding_types[$parts[$p]->encoding];
$skip_next = ($ftype == 'message/rfc822')? true : false;
if ($ftype == 'multipart/mixed' || $skip_part == true && $ftype == 'multipart/alternative' || $ftype == 'multipart/related')
{
$n--;
}
else
{
$this->pid[$mid][$n] = ($is_sub_part == false)? $i : $sub_pid.'.'.$i;
$this->file_type[$mid][$n] = $ftype;
$this->encoding[$mid][$n] = $encoding;
$this->fsize[$mid][$n] = (!isset($parts[$p]->bytes) || empty($parts[$p]->bytes))? 0 : $parts[$p]->bytes;
# force inline disposition if none is present
if ($parts[$p]->ifdisposition == true)
{
$this->disposition[$mid][$n] = strtolower($parts[$p]->disposition);
if (strtolower($parts[$p]->disposition) == 'attachment')
{
if ($parts[$p]->ifdparameters == true)
{
$params = $parts[$p]->dparameters;
foreach ($params as $param)
{
if(strtolower($param->attribute) == 'filename')
{
$this->fname[$mid][$n] = $param->value;
break;
}
}
}
}else if (strtolower($parts[$p]->disposition) == 'inline')
{
if ($parts[$p]->ifdparameters == true)
{
$params = $parts[$p]->dparameters;
foreach ($params as $param)
{
if(strtolower($param->attribute) == 'filename')
{
$this->fname[$mid][$n] = $param->value;
break;
}
}
}
}
}
else if ($parts[$p]->ifparameters == true)
{
$this->disposition[$mid][$n] = 'inline';
$params = $parts[$p]->parameters;
foreach ($params as $param)
{
if(strtolower($param->attribute) == 'name')
{
$this->fname[$mid][$n] = $param->value;
break;
}else if(strtolower($param->attribute) == 'charset'){
$this->file_code[$mid][$n] = strtolower($param->value);
&n
相关文章
- 人们熟悉的寄居蟹属于以下哪种分类 神奇海洋11月21日答案 11-21
- 第五人格11.22共研服有什么更新 11月22日共研服更新内容介绍 11-21
- 原神恰斯卡怎么培养 11-21
- 无期迷途四星装束是谁 11-21
- 王者荣耀帝丹高中校服怎么获得 11-21
- 光遇姆明季后续版本怎么玩 11-21