导航:首页 > 程序命令 > imapfetch命令

imapfetch命令

发布时间:2023-03-04 11:01:51

‘壹’ 求解为何部分IMAP邮箱对imap协议的search命令无法返回正确结果

http://config.mail.163.com/settings/imap/index.jsp?uid=XXXXX@163.com,这是一个隐藏的设置,要到这里配置才能用163的imap或者pop。

XXXXX@163.com,这个是你的邮箱地址。xxxx不能是手机号。如果是手机号的话,用其他邮箱名称。我自己的原来是手机号邮箱,用不了,在前面加m就可以了。或者要自己去设置一个新的邮箱名称。

‘贰’ 如何用php里的IMAP函数,实现邮件的发送,希

//以腾讯企业邮箱做了测试
$mailServer="imap.exmail.qq.com";//IMAP主机
$mailLink="{{$mailServer}:143}INBOX";//imagp连接地址:不同主机地址不同
$mailUser='***';//邮箱用户名
$mailPass='***';//邮箱密码
$mbox=imap_open($mailLink,$mailUser,$mailPass);//开启信箱imap_open
$totalrows=imap_num_msg($mbox);//取得信件数
for($i=1;$i<$totalrows;$i++){
$headers=imap_fetchheader($mbox,$i);//获取信件标头
$headArr=matchMailHead($headers);//匹配信件标头
$mailBody=imap_fetchbody($mbox,$i,1);//获取信件正文
}
/**
*
*匹配提取信件头部信息
*@paramString$str
*/
functionmatchMailHead($str){
$headList=array();
$headArr=array(
'from',
'to',
'date',
'subject'
);
foreach($headArras$key){
if(preg_match('/'.$key.':(.*?)[ ]/is',$str,$m)){
$match=trim($m[1]);
$headList[$key]=$key=='date'?date('Y-m-dH:i:s',strtotime($match)):$match;
}
}
return$headList;
}

‘叁’ POP3/IMAP/SMTP服务是什么意思

POP3/IMAP/SMTP服务是一套邮件管理服务,其通过POP3、IMAP、SMTP协议的实现。

1、POP3服务

POP3服务是POP3协议的实现。POP3对协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是PC机或MAC。

一旦邮件发送到PC机或MAC上,邮件服务器上的邮件将会被删除。但目前的POP3邮件服务器大都可以“只下载邮件,服务器端并不删除”,也就是改进的POP3协议。

2、IMAP服务

IMAP服务是IMAP协议的实现。IMAP协议以前称作交互邮件访问协议。IMAP是斯坦福大学在1986年开发的一种邮件获取协议。它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。当前的权威定义是RFC3501。

IMAP协议运行在TCP/IP协议之上,使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。

3、SMTP服务

SMTP服务是SMTP协议的实现。SMTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者,然后消息文本会被传输。可以很简单地通过telnet程序来测试一个SMTP服务器。SMTP使用TCP端口25。要为一个给定的域名决定一个SMTP服务器,需要使用MXDNS。

(3)imapfetch命令扩展阅读:

POP3服务常用指令:

1、USER[username]

处理用户名。

2、PASS[password]

处理用户密码。

3、APOP[Name,Digest]

认可Digest是MD5消息摘要。

4、STAT

处理请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数。

5、UIDL[Msg#]

处理返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的。

6、LIST[Msg#]

处理返回邮件数量和每个邮件的大小。

7、RETR[Msg#]

处理返回由参数标识的邮件的全部文本。

8、DELE[Msg#]

处理服务器将由参数标识的邮件标记为删除,由quit命令执行。

9、RSET

处理服务器将重置所有标记为删除的邮件,用于撤消DELE命令。

10、TOP[Msg#n]

处理服务器将返回由参数标识的邮件前n行内容,n必须是正整数。

‘肆’ 请教通过imap收取pop邮件的问题

IMAP,英文全称 Internet Message Access Protocol(互联网邮件访问协议),和POP协议一样,它也是一种邮件获取协议,我们可以通过这种协议从邮件服务器上获取邮件的信息、下载邮件等。但与POP不同的是,IMAP 是“双向”的,换句话说,你在电子邮件客户端或者移动设备进行的操作,都可以自动同步到服务器上,并可以通过客户端直接对服务器上的邮件进行操作。同时,IMAP可以只下载邮件的主题,只有当你真正需要的时候,才会下载邮件的所有内容。如果你是在多种环境下接收邮件,无论是在家里还是在公司,无论是用客户端还是手机接收,IMAP都可以帮你及时获取到最新的邮件。就在前不久,QQ邮箱开通了IMAP服务,这样一来,往后我们便可以更加轻松自如地在邮件客户端中收发邮件了。

一、开启IMAP服务

要想使用该种协议,我们首先要在QQ邮箱中开启 IMAP 服务,方法很简单,登录自己的QQ邮箱,单击窗口上方的“设置”链接,进入到“邮箱设置”窗口,然后点击其中的“账户”标签页,最后将下方的“开启IMAP服务”一项复选框勾中,保存更改便可以了。

二、配置邮件客户端

目前,支持 QQ 邮箱 IMAP 服务的邮件客户端有 Foxmail、Outlook Express、Out-look2003 和 Outlook2007等,开通了IMAP 服务之后,我们还需要对具体的邮件客户端进行一番配置,接下来就以Foxmail为例,跟大家介绍一下如何配置邮件客户端。

步骤一,打开 Foxmail,首先在“邮箱”菜单中选中“新建邮箱账户”命令。

步骤二,此时会打开向导窗口,在其中键入电子邮箱地址、密码、账户名称等信息,单击“下一步”按钮。步骤三,这时会弹出“指定邮箱服务器”对话框,请在“接受服务器类型”下拉框中选择“IMAP”一项,“接收邮件服务器”为“imap.qq.com”,而“发送邮件服务器”则为“smtp.qq.com”,然后再单击“下一步”完成配置。如此一番设置之后,往后自己就可以通过IMAP协议在 Foxmail 中收发 QQ 邮箱中的邮件了。

‘伍’ 如何删除IMAP邮件服务器的邮件

一、不显示删除标记的邮件设置IMAP后,收取邮件,选中需要删除邮件,执行删除命令,会发现不像POP3时一样直接删除,而是标记一下,仅仅是标了删除线而已。在日常查看时,肯定不希望这些标记的邮件显示出来,执行“视图→当前视图→隐藏标记为删除的邮件”,这时会发现标记有删除的邮件已经不再显示了。

二、删除邮件这里说的删除是指通过Outlook删除在服务器中的邮件,由于默认情况下,在Outlook中删除IMAP邮箱中的邮件,只是添加删除线,因此要想真正的删除邮件就得再多一步操作。执行“→清除→清除所有帐户中已标记的项目”命令,这时再回到“IMAP视图”,会发现那些标有删除线的邮件都被删除了。

三、自动删除标记的邮件如果每次删除邮件都需要先“标记”然后再清除,未免也太麻烦了,因此可以让Outlook自动清理。执行“编辑→清除→清除选项”命令,在打开的“Internet电子邮件选项”对话框的“常规”标签中,勾选“联机切换文件夹时清除项目”复选框,这样再次删除邮件时,只需要在不同的邮件夹之间切换一下,Outlook便会自动执行清除命令了。不过如果在脱机状态的话,不会自动清除邮件(主要是因为Outlook想清除也清除不了)。

‘陆’ 我用python通过imap收取邮件时为什么能收取

想用python做一个很简单的接收邮件的功能,只看python的官方doc(http://docs.python.org/2/library/imaplib.html)真的很不好懂,经过google之,探索之,稍微总结一下:

要使用imap接收邮件,当然要导入imaplib拉.
import imaplib

然后按常规的,建立链接→登录
conn = imaplib.IMAP4("imap.xxx.com",143)

conn.login("userName","password")

然后我想查看收件箱的邮件,咋办呢?要先选择一个目录,收件箱默认名称是"INBOX",IMAP是支持创建文件夹,查看其它文件夹的,如果是自己新建的文件夹,那么名称一般会是"INBOX.新建文件夹",不同的邮箱可能表示方式不一样,如果你不知道的话,那运行conn.list()查看所有的文件夹.
conn.select("INBOX")

选择后,然后查看文件夹,注意,IMAP的查看其实是一个搜索的过程,IMAP的原始命令是search all(大概的),在python里这么用:
type, data = conn.search(None, 'ALL')

然后返回的是这个收件箱里所有邮件的编号,按接收时间升序排列,最后的表示最近.
search这个很鬼麻烦,因为官方文档里没讲这个函数的第二个参数怎么用,于是找了下,可以填的命令有:
http://www.afterlogic.com/mailbee-net/docs/MailBee.ImapMail.Imap.Search_overload_1.html
于是如果我想找Essh邮件的话,使用
type, data = conn.search(None, '(SUBJECT "Essh")')

里面要用一个括号,代表是一个查询条件,可以同时指定多个查询条件,例如FROM xxxx SUBJECT "aaa",注意,命令要用括号罩住(痛苦的尝试)
search第一个参数是charset的意思,填None表示用默认ASCII,
data里获取到的是一个只有一个字符串元素的数组,包含很多数字,用空格隔开
['1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103'

于是想获取最后一封的做法是:
msgList = data[0].split()
last = msgList[len(msgList) - 1]

然后把那个邮件获取回来,用fetch函数
例子:
conn.fetch(last, '(RFC822.SIZE BODY[HEADER.FIELDS (SUBJECT)])')

但是返回的是一串MIME编码的东东,看不懂,如果能像eml那一操作一封邮件就好了.
方法是有的,用email库.
import email

然后以RFC822获取邮件格式,再用email.message_from_string转换为message对象.就可以当message操作了,(http://docs.python.org/2/library/email.message.html)
type,data=connect.fetch(msgList[len(msgList)-1],'(RFC822)')
msg=email.message_from_string(data[0][1])
content=msg.get_payload(decode=True)

最后content得到就是邮件的内容了

‘柒’ php IMAP读取邮件信息

<?php
$mbox = imap_open("{imap.gmail.com:993/imap/ssl}INBOX", "xxxx@gmail.com", "xxxx") or die("can't connect: " . imap_last_error());
$emails = imap_search($mbox,'ALL');
ini_set("max_execution_time",300);
if($emails) {
rsort($emails);
foreach($emails as $email_number) {
$overview = imap_fetch_overview($mbox,$email_number,0);
$pos = explode('@',$overview[0]->from);
$phone = substr($pos[0],-11); // 发件人手机号码
$struct = imap_fetchstructure($mbox, $email_number);
print_r($struct);
$parts = $struct->parts;
$i = 0;
if (!$parts) { /* Simple message, only 1 piece */
$attachment = array(); /* No attachments */
$content = imap_body($mbox, $email_number);
} else { /* Complicated message, multiple parts */
$endwhile = false; $stack = array(); /* Stack while parsing message */
$content = ""; /* Content of message */
$attachment = array(); /* Attachments */ while (!$endwhile) {
if (!$parts[$i]) {
if (count($stack) > 0) {
$parts = $stack[count($stack)-1]["p"];
$i = $stack[count($stack)-1]["i"] + 1;
array_pop($stack);
} else {
$endwhile = true;
}
}
if (!$endwhile) {
/* Create message part first (example '1.2.3') */
$partstring = "";
foreach ($stack as $s) {
$partstring .= ($s["i"]+1) . ".";
}
$partstring .= ($i+1);

$file_data = imap_fetchbody($mbox, $email_number, $partstring);
$attachment[] = array("filename" =>$parts[$i]->parameters[0]->value,
"filedata" => $file_data
);
if($parts[$i]->subtype == 'JPEG')
{
$file_name = md5(time().rand(5,200)).'.jpg';
file_put_contents($file_name,base64_decode($file_data));
}elseif($parts[$i]->subtype == 'GIF'){
$file_name = md5(time().rand(5,200)).'.gif';
file_put_contents($file_name,base64_decode($file_data));
}elseif($parts[$i]->subtype == 'PLAIN'){
$txt_name = time().rand(5,200).'.txt';
file_put_contents($txt_name,base64_decode($file_data));
}
}
if ($parts[$i]->parts) {
$stack[] = array("p" => $parts, "i" => $i);
$parts = $parts[$i]->parts;
$i = 0;
} else {
$i++;
}
} /* while */
} /* complicated message */
echo "userphone $phone, result:
";
echo "Content: $content

";
echo "Attachments:"; var_mp($attachment);
echo "<br/><br/>---------------------------------------------------------------------<br/><br/>";
}
}
imap_close($mbox);
?>

阅读全文

与imapfetch命令相关的资料

热点内容
移动网络显示已加密保存什么意思 浏览:135
vm15虚拟机共享文件夹找不到 浏览:406
三星壁纸安卓怎么设置 浏览:25
整式乘除运算法则 浏览:501
在svn内创建文件夹 浏览:796
解压缩有后缀 浏览:521
手机版我的世界服务器如何与队友连接 浏览:919
安卓版抖音如何看好友抖音在线 浏览:65
雪佛兰景程空调压缩机转风扇不转 浏览:186
文档加密传输中关村 浏览:391
云图计划全算法 浏览:479
程序员开工作室需要什么手续 浏览:456
Python中的u1 浏览:108
51单片机无线音乐门铃设计 浏览:531
408算法题分布 浏览:574
三台cnc需要配多大的压缩机 浏览:938
压缩波的另一个名称 浏览:365
电厂电气设备pdf 浏览:270
linux驱动程序编译 浏览:637
编译代码有什么好处 浏览:217