对于想了解PHPIMAP解码消息的读者,本文将是一篇不可错过的文章,我们将详细介绍php解码url,并且为您提供关于Imap是什么意思,phpimap函数详解、Imap是什么意思,phpimap函数详
对于想了解PHP IMAP解码消息的读者,本文将是一篇不可错过的文章,我们将详细介绍php解码url,并且为您提供关于Imap是什么意思,php imap 函数详解、Imap是什么意思,php imap 函数详解_PHP教程、JS中encodeURIComponent函数用php解码的代码_php技巧、JS中encodeURIComponent函数用php解码的代码_PHP教程的有价值信息。
本文目录一览:- PHP IMAP解码消息(php解码url)
- Imap是什么意思,php imap 函数详解
- Imap是什么意思,php imap 函数详解_PHP教程
- JS中encodeURIComponent函数用php解码的代码_php技巧
- JS中encodeURIComponent函数用php解码的代码_PHP教程
PHP IMAP解码消息(php解码url)
如何解决PHP IMAP解码消息?
imap_bodystruct()或imap_fetchstructure()应该将此信息返回给您。以下代码可以完全满足您的需求:
<?PHP
$hostname = ''{********:993/imap/ssl}INBox'';
$username = ''*********'';
$password = ''******'';
$inBox = imap_open($hostname,$username,$password) or die(''Cannot connect to server: '' . imap_last_error());
$emails = imap_search($inBox,''ALL'');
if($emails) {
$output = '''';
rsort($emails);
foreach($emails as $email_number) {
$overview = imap_fetch_overview($inBox,$email_number,0);
$structure = imap_fetchstructure($inBox, $email_number);
if(isset($structure->parts) && is_array($structure->parts) && isset($structure->parts[1])) {
$part = $structure->parts[1];
$message = imap_fetchbody($inBox,$email_number,2);
if($part->encoding == 3) {
$message = imap_base64($message);
} else if($part->encoding == 1) {
$message = imap_8bit($message);
} else {
$message = imap_qprint($message);
}
}
$output.= ''<div>'';
$output.= ''<span>From: ''.utf8_decode(imap_utf8($overview[0]->from)).''</span>'';
$output.= ''<span>on ''.utf8_decode(imap_utf8($overview[0]->date)).''</span>'';
$output.= ''<br /><span>Subject(''.$part->encoding.''): ''.utf8_decode(imap_utf8($overview[0]->subject)).''</span> '';
$output.= ''</div>'';
$output.= ''<div>''.$message.''</div><hr />'';
}
echo $output;
}
imap_close($inBox);
?>
解决方法
我有通过base64编码和8bit编码发送的电子邮件。我想知道如何使用imap_fetchstructure检查消息的编码(因为这样做大约两个小时,所以丢失了)然后正确解码。
Gmail和Mailbox(iOS上的应用)以8位发送,而Windows
8的Mail应用以base64发送。无论哪种方式,我都需要通过检测已使用的编码类型来解码其8bit还是base64。
使用PHP 5.1.6(是的,我应该更新,很忙)。
我真的没有代码要显示。这就是我所拥有的:
<?php
$hostname = ''{********:993/imap/ssl}INBOX'';
$username = ''*********'';
$password = ''******'';
$inbox = imap_open($hostname,$username,$password) or die(''Cannot connect to server: '' . imap_last_error());
$emails = imap_search($inbox,''ALL'');
if($emails) {
$output = '''';
rsort($emails);
foreach($emails as $email_number) {
$overview = imap_fetch_overview($inbox,$email_number,0);
$message = imap_fetchbody($inbox,2);
$struct = imap_fetchstructure($inbox,$email_number);
$output.= ''<div>'';
$output.= ''<span>''.$overview[0]->subject.''</span> '';
$output.= ''<span>''.$overview[0]->from.''</span>'';
$output.= ''<span>on ''.$overview[0]->date.''</span>'';
$output.= ''</div>'';
/* output the email body */
$output.= ''<div>''.$message.''</div>'';
}
echo $output;
}
imap_close($inbox);
?>
Imap是什么意思,php imap 函数详解
imap 的全名是 internet message access protocol,即网际网络信息存取协议,为美国史丹福大学 (stanford university) 在 1986 年开始研发的多重邮箱电子邮件系统。php 所提供的功能是 imap 4 的系统,这是根据 rfc 1730 所实作的。更多有关 imap 的信息可以参考 imap 的官方网站 http://www.imap.org 。
欲使用 imap 的电子邮件功能,要先到 ftp://ftp.cac.washington.edu/imap 下载 imap 的客户端程序。在编译完成之后将 c-client/c-client.a 复制到 /usr/local/lib 之中,并将 c-client/rfc822.h、mail.h 及 linkage.h 三个文件复制到 /usr/local/include 之下。之后编译 php 程序时要加入 –with-imap 的选项。
imap_append : 附加字符串到指定的邮箱中。
imap_base64 : 解 base64 编码。
imap_body : 读信的内文。
imap_check : 返回邮箱信息。
imap_close : 关闭 imap 链接。
imap_createmailbox : 建立新的信箱。
imap_delete : 标记欲删除邮件。
imap_deletemailbox : 删除既有信箱。
imap_expunge : 删除已标记的邮件。
imap_fetchbody : 从信件内文取出指定部分。
imap_fetchstructure : 获取某信件的结构信息。
imap_header : 获取某信件的标头信息。
imap_headers : 获取全部信件的标头信息。
imap_listmailbox : 获取邮箱列示。
imap_listsubscribed : 获取订阅邮箱列示。
imap_mail_copy : 复制指定信件到它处邮箱。
imap_mail_move : 移动指定信件到它处邮箱。
imap_num_msg : 取得信件数。
imap_num_recent : 取得新进信件数。
imap_open : 打开 imap 链接。
imap_ping : 检查 imap 是否连接。
imap_renamemailbox : 更改邮箱名字。
imap_reopen : 重开 imap 链接。
imap_subscribe : 订阅邮箱。
imap_undelete : 取消删除邮件标记。
imap_unsubscribe : 取消订阅邮箱。
imap_qprint : 将 qp 编码转成八位。
imap_8bit : 将八位转成 qp 编码。
imap_binary : 将八位转成 base64 编码。
imap_scanmailbox : 寻找信件有无特定字符串。
imap_mailboxmsginfo : 取得目前邮箱的信息。
imap_rfc822_write_address : 电子邮件位址标准化。
imap_rfc822_parse_adrlist : 解析电子邮件位址。
imap_setflag_full : 配置信件标志。
imap_clearflag_full : 清除信件标志。
imap_sort : 将信件标头排序。
imap_fetchheader : 取得原始标头。
imap_uid : 取得信件 uid。
imap_getmailboxes : 取得全部信件详细信息。
imap_getsubscribed : 列出所有订阅邮箱。
imap_msgno : 列出 uid 的连续信件。
imap_search : 搜寻指定标准的信件。
imap_last_error : 最后的错误信息。
imap_errors : 所有的错误信息。
imap_alerts : 所有的警告信息。
imap_status : 目前的状态信息。
imap_append
附加字符串到指定的邮箱中。
语法: int imap_append(int imap_stream, string mbox, string message, string [flags]);
返回值: 整数
函数种类: 网络系统
内 容说明: 本函数可在指定的电子邮箱中增加附加的字符串。参数 imap_stream 为 imap 的代号。参数 mbox 为电子邮箱的位址。参数 message 为欲附加的信息。参数 flag 为可省略的标志,表示电子邮箱的标志值。治募 注意的是要与 cyrus imap 服务器沟通时,应使用 \r\n 作为行结束字符 (end-of-line, eol)。若有错误则返回 false 值。
imap_base64
解 base64 编码。
语法: string imap_base64(string text);
返回值: 字符串
函数种类: 网络系统
内容说明: 本函数可将用 base64 编码字符串解码。返回值是解码后的字符串。
参考 imap_binary() base64_encode() base64_decode()
立即学习“PHP免费学习笔记(深入)”;
imap_body
读信的内文。
语法: string imap_body(int imap_stream, int msg_number, int [flags]);
返回值: 字符串
函数种类: 网络系统
内容说明
本函数可读取信件的内文 (body) 部份。参数 imap_stream 为 imap 的代号。参数 msg_number 为信件的序号。参数 flags 可省略,有下列的值
ft_uid : 信件序号为 uid。
ft_peek : 若无配置 \seen 标志则不要设本标志。
ft_internal : 返回字符串使用系统格式,不要刻意转成 crlf 行结束标准。
使用范例
本例利用 imap 协议读取 myid@localhost 的第一封信件。
imap_check
返回邮箱信息。
语法: object imap_check(int imap_stream);
返回值: 类
函数种类: 网络系统
内容说明: 本函数可取得目前电子邮箱的信息。返回值为类类型,包含下面的属性
date最新邮件的日期driver使用的界面mailbox电子邮箱网址nmsgs总邮件数目recent新进邮件数目
类属性 代表意义说明
参考 imap_mailboxmsginfo()
imap_close
关闭 imap 链接。
语法: int imap_close(int imap_stream, int [flags]);
返回值: 整数
函数种类: 网络系统
内容说明: 本函数用来关闭 imap 的资料流,亦即结束链接。可省略的参数 flags 的值若为 cl_expunge 则在关闭链接前会将电子邮件信箱清空。
imap_createmailbox
建立新的信箱。
语法: int imap_createmailbox(int imap_stream, string mbox);
返回值: 整数
函数种类: 网络系统
内容说明
本函数用来建立新的信箱。成功则返回 true 值。
imap_delete
标记欲删除邮件。
语法: int imap_delete(int imap_stream, int msg_number);
返回值: 整数
函数种类: 网络系统
内容说明
本函数仅用来标记欲删除之邮件。实际删除的指令 imap_expunge()
imap_deletemailbox
删除既有信箱。
语法: int imap_deletemailbox(int imap_stream, string mbox);
返回值: 整数
函数种类: 网络系统
内容说明: 本函数用来删除既有的信箱。成功则返回 true 值。
imap_expunge
删除已标记的邮件。
语法: int imap_expunge(int imap_stream);
- 共5页:
- 上一页
- 1
- 2
- 3
- 4
- 5
- 下一页
Imap是什么意思,php imap 函数详解_PHP教程
imap 的全名是 internet message access protocol,即网际网络信息存取协议,为美国史丹福大学 (stanford university) 在 1986 年开始研发的多重邮箱电子邮件系统。php 所提供的功能是 imap 4 的系统,这是根据 rfc 1730 所实作的。更多有关 imap 的信息可以参考 imap 的官方网站 http://www.imap.org 。
欲使用 imap 的电子邮件功能,要先到 ftp://ftp.cac.washington.edu/imap 下载 imap 的客户端程序。在编译完成之后将 c-client/c-client.a 复制到 /usr/local/lib 之中,并将 c-client/rfc822.h、mail.h 及 linkage.h 三个文件复制到 /usr/local/include 之下。之后编译 php 程序时要加入 –with-imap 的选项。
imap_append : 附加字符串到指定的邮箱中。
imap_base64 : 解 base64 编码。
imap_body : 读信的内文。
imap_check : 返回邮箱信息。
imap_close : 关闭 imap 链接。
imap_createmailbox : 建立新的信箱。
imap_delete : 标记欲删除邮件。
imap_deletemailbox : 删除既有信箱。
imap_expunge : 删除已标记的邮件。
imap_fetchbody : 从信件内文取出指定部分。
imap_fetchstructure : 获取某信件的结构信息。
imap_header : 获取某信件的标头信息。
imap_headers : 获取全部信件的标头信息。
imap_listmailbox : 获取邮箱列示。
imap_listsubscribed : 获取订阅邮箱列示。
imap_mail_copy : 复制指定信件到它处邮箱。
imap_mail_move : 移动指定信件到它处邮箱。
imap_num_msg : 取得信件数。
imap_num_recent : 取得新进信件数。
imap_open : 打开 imap 链接。
imap_ping : 检查 imap 是否连接。
imap_renamemailbox : 更改邮箱名字。
imap_reopen : 重开 imap 链接。
imap_subscribe : 订阅邮箱。
imap_undelete : 取消删除邮件标记。
imap_unsubscribe : 取消订阅邮箱。
imap_qprint : 将 qp 编码转成八位。
imap_8bit : 将八位转成 qp 编码。
imap_binary : 将八位转成 base64 编码。
imap_scanmailbox : 寻找信件有无特定字符串。
imap_mailboxmsginfo : 取得目前邮箱的信息。
imap_rfc822_write_address : 电子邮件位址标准化。
imap_rfc822_parse_adrlist : 解析电子邮件位址。
imap_setflag_full : 配置信件标志。
imap_clearflag_full : 清除信件标志。
imap_sort : 将信件标头排序。
imap_fetchheader : 取得原始标头。
imap_uid : 取得信件 uid。
imap_getmailboxes : 取得全部信件详细信息。
imap_getsubscribed : 列出所有订阅邮箱。
imap_msgno : 列出 uid 的连续信件。
imap_search : 搜寻指定标准的信件。
imap_last_error : 最后的错误信息。
imap_errors : 所有的错误信息。
imap_alerts : 所有的警告信息。
imap_status : 目前的状态信息。
imap_append
附加字符串到指定的邮箱中。
语法: int imap_append(int imap_stream, string mbox, string message, string [flags]);
返回值: 整数
函数种类: 网络系统
内 容说明: 本函数可在指定的电子邮箱中增加附加的字符串。参数 imap_stream 为 imap 的代号。参数 mbox 为电子邮箱的位址。参数 message 为欲附加的信息。参数 flag 为可省略的标志,表示电子邮箱的标志值。治募 注意的是要与 cyrus imap 服务器沟通时,应使用 \r\n 作为行结束字符 (end-of-line, eol)。若有错误则返回 false 值。
imap_base64
解 base64 编码。
语法: string imap_base64(string text);
返回值: 字符串
函数种类: 网络系统
内容说明: 本函数可将用 base64 编码字符串解码。返回值是解码后的字符串。
参考 imap_binary() base64_encode() base64_decode()
立即学习“PHP免费学习笔记(深入)”;
imap_body
读信的内文。
语法: string imap_body(int imap_stream, int msg_number, int [flags]);
返回值: 字符串
函数种类: 网络系统
内容说明
本函数可读取信件的内文 (body) 部份。参数 imap_stream 为 imap 的代号。参数 msg_number 为信件的序号。参数 flags 可省略,有下列的值
ft_uid : 信件序号为 uid。
ft_peek : 若无配置 \seen 标志则不要设本标志。
ft_internal : 返回字符串使用系统格式,不要刻意转成 crlf 行结束标准。
使用范例
本例利用 imap 协议读取 myid@localhost 的第一封信件。
imap_check
返回邮箱信息。
语法: object imap_check(int imap_stream);
返回值: 类
函数种类: 网络系统
内容说明: 本函数可取得目前电子邮箱的信息。返回值为类类型,包含下面的属性
date最新邮件的日期driver使用的界面mailbox电子邮箱网址nmsgs总邮件数目recent新进邮件数目
类属性 代表意义说明
参考 imap_mailboxmsginfo()
imap_close
关闭 imap 链接。
语法: int imap_close(int imap_stream, int [flags]);
返回值: 整数
函数种类: 网络系统
内容说明: 本函数用来关闭 imap 的资料流,亦即结束链接。可省略的参数 flags 的值若为 cl_expunge 则在关闭链接前会将电子邮件信箱清空。
imap_createmailbox
建立新的信箱。
语法: int imap_createmailbox(int imap_stream, string mbox);
返回值: 整数
函数种类: 网络系统
内容说明
本函数用来建立新的信箱。成功则返回 true 值。
imap_delete
标记欲删除邮件。
语法: int imap_delete(int imap_stream, int msg_number);
返回值: 整数
函数种类: 网络系统
内容说明
本函数仅用来标记欲删除之邮件。实际删除的指令 imap_expunge()
imap_deletemailbox
删除既有信箱。
语法: int imap_deletemailbox(int imap_stream, string mbox);
返回值: 整数
函数种类: 网络系统
内容说明: 本函数用来删除既有的信箱。成功则返回 true 值。
imap_expunge
删除已标记的邮件。
语法: int imap_expunge(int imap_stream);
- 共5页:
- 上一页
- 1
- 2
- 3
- 4
- 5
- 下一页
JS中encodeURIComponent函数用php解码的代码_php技巧
JS中encodeURIComponent函数给中文编码后,如何用php解码??
前提:编码前的中文可能是gbk,gb2312,utf-8等。
urldecode()
iconv()
在JS中使用了encodeURIComponent对中文进行编码在PHP中使用iconv(''UTF-8'',''gb2312'',$q);就可以得到你需要的字串了,其中gb2312根据你实际应用来定如还不明白为什么看下面的文章
URL编码转换,escape() encodeURI() encodeURIComponent()
本文介绍对url编码的三种函数 escape() ,encodeURI() ,encodeURIComponent()
escape() 方法:
采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。unescape方法与此相反。不会被此方法编码的字符: @ * / +
encodeURI() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + ''
encodeURIComponent() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。不会被此方法编码的字符:! * ( )
因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。
注意:escape 方法不能用来对“统一资源标识符”(uri) 进行编码。对其编码应使用 encodeuri 和 encodeuricomponent 方法。另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。
总结一下用法:
1、HTTP/POST方式在缺省情况下,采用的是“x-www-form-urlencoded”进行编码,它和JavaScript里面的encodeURI所起的作用是一样的;
2、经过这样编码的内容,到达后台时,其中的字符都是UTF-8编码格式的;
3、如果你的Servlet/JSP指定输出使用的Content-Type是UTF-8,恭喜你,你不需要对这些Parameters进行特别的编码、解码操作,它一定是正常的;
4、否则你需要对这些parameter进行解、编码操作,例如你的页面是GBK编码,那么你需要这么写:
String sPara = new String(request.getParamter("test").getBytes("iso-8859-1"),"GBK");
采用gb2312编码的也可以采用GBK编码;
5、如果你是在eclipse中进行工作,请注意你的Servlet和JSP文件的属性,其中的编码必须和content-type中设置的一样,否则javac会对你的文件进行错误的编码,这时候的字节码文件本身的字符串就是错误的,输出也不顶用;
6、最后做一个总结:
6.1、servlet/JSP文件本身的编码必须和content-type输出的一致,否则需要加入额外的编码、解码步骤;
6.2、HTTP/POST方式和encodeURI方式传入的编码都是UTF-8的;
6.3、普通的window.open(...),也就是HTTP/GET方式,其传入的编码是和运行script的页面编码一致的;
6.4、后台解码必须通过iso-8859-1进行解码,再使用你的目标编码进行编码;
6.5、 response.setContentType("text/xml;charset=utf-8");
如有汉字回显至页面,须加charset=utf-8字样
request.setCharacterEncoding("UTF-8");//页面如通过POST过来,含有汉字,须加这一句
此语句放在程序最前面;
6.6 请保证项目属性编码为"UTF-8",请求页面与响应页面编码一致(可以是后台)UTF-8.必须保证文件
属性和ContentType设置一致
JS中encodeURIComponent函数用php解码的代码_PHP教程
JS中encodeURIComponent函数给中文编码后,如何用php解码??
前提:编码前的中文可能是gbk,gb2312,utf-8等。
urldecode()
iconv()