php通过imap获取腾讯企业邮箱信息后的解码处理
最近需要在项目开发的oa中集成一个收发腾讯企业邮箱邮件的功能,今天做到了获取收件箱内容部分,imap如何获取就不写了,百度一堆,主要是关于内容的解码
主要以邮件主题解码为主,腾讯企业邮返回的数据主要有以下几种格式
1."subject": "=?UTF-8?B?5o+Q6YaS77yB77yB5pys5pyI5pyJ5pyq5o+Q5Lqk5pel5oql77yB?="
2."subject": "=?utf-8?Q?5YWz5LqO5YWs5Y+457uE57uH5p625p6E6LCD5pW0?="
3."subject": "=?gb2312?Q?2017=C4=EA10=D4=C2=B9=A4=D7=CA=CC=F5?="
4."subject": "=?GB2312?B?sr/K8Mnqx+u1pQ==?="
主要是分为utf8以及gb2312这两种,后面分别带着B跟Q,代表是base64_decode解码或者是quoted_printable_decode,代码如下
//解析主题
public function editSubject($value){
$valuearr1 = explode('?',$value); //通过问号分割字符串,获取到有用的数据
if($valuearr1[1] == 'UTF-8' || $valuearr1[1] == 'utf-8'){
if($valuearr1[2] == 'Q'){
return quoted_printable_decode($valuearr1[3]);
}else{
return base64_decode($valuearr1[3]);
}
}else if($valuearr1[1] == 'GB2312' || $valuearr1[1] == 'gb2312'){
if($valuearr1[2] == 'Q'){
return iconv('gb2312','UTF-8//IGNORE',quoted_printable_decode( $valuearr1[3]));
}else{
return iconv('gb2312','UTF-8//IGNORE',base64_decode( $valuearr1[3]));
}
}else{
return $value;
}
} 因为当前的代码环境及文件格式都是utf8的,所以需要将所有的gn2312都通过iconv转为utf8,否则返回数据给前端时会出现问题,另外这个方法对于非utf8及gb2312以外的情况作了特殊处理,直接返回原数据,以后遇到这种特殊情况不会报错,可以直接看到方便后续补充 ps:imap进行收件操作,效率真的很低,很慢。。只获取20封邮件大概从请求接口到发起imap到接受数据(不包括解析,数据只包括信件标头)需要7秒以上(保守估计,受网络影响很严重),如果使用imap直接获取单个邮件内容,需要8-10秒,视情况而定,很坑。。
php通过imap获取腾讯企业邮箱信息后的解码处理的更多相关文章
- 利用腾讯企业邮箱开放API获取账户未读邮件数初探
公司一直使用腾讯提供的免费企业邮箱服务,今天用管理员帐户登录后发现,原来现在腾讯的企业邮箱也开放了部分API 你可以通过开放接口实现以下功能: 数据同步 数据同步可以帮助你同步部门成员信息,你还可以创 ...
- ubuntu 14.04 下evolution邮箱客户端设置(腾讯企业邮箱)
安装 evolution 有PPA可用,支持 Ubuntu 14.04 及衍生系统.打开终端,输入以下命令: sudo add-apt-repository ppa:fta/gnome3 sudo a ...
- outlook2016用Exchange轻松绑定腾讯企业邮箱
系统版本:Win10 X64 1709 英文版 邮箱:Outlook2016 背景知识: 1.发送邮件均使用SMTP协议(SMTP 全称“Simple Mail Transfer Protocol”, ...
- 解决使用Foxmail客户端软件不能收取腾讯企业邮箱的全部邮件
一般说来,使用Foxmail客户端软件收取邮箱时,需要作如下几步: 1.进入邮箱web界面授权开启POP3/SMTP服务.IMAP/SMTP等服务 2.在邮箱web界面配置收取选项,可选择收取全部邮件 ...
- 腾讯企业邮箱POP,SMTP分别是什么
腾讯企业邮箱在做域名解析的时候不用做pop3和 smtp设置,可以使用下列的协议: POP3/SMTP协议 接收邮件服务器:pop.exmail.qq.com (端口 110),使用SSL,端口号 ...
- centos 邮件服务 腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25 收邮件协议:pop3 端口110 iredmail安装配置 使用邮箱系统 第三十一节课
centos 邮件服务 腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25 收邮件协议:pop3 端口110 iredmail安装配置 ...
- 解析腾讯企业邮箱到自己域名,设置mail的cname
之前注册了腾讯企业邮的免费邮箱,后来想把企业邮箱和域名绑定起来,发现了一些问题. 先来看正常的部分,假设你已经注册过了腾讯企业邮箱免费版,并且已经绑定好了域名. 然后在域名提供商那里设置域名解析的MX ...
- python 发送邮件 <QQ+腾讯企业邮箱>
一.使用QQ邮箱或者腾讯企业邮箱 python 发送邮件属于网络编程方向的,在工作中,我需要经常用邮件来检测我的程序运行状况.使用起来十分方便,这里我就用腾讯企业邮箱作为我的收发邮箱来使用. 使用py ...
- C#发送腾讯企业邮箱
腾讯企业邮箱客户端配置介绍 http://email-qq.cn/tengxun/201610303793.html?akvezc=smt0n2 POP3/SMTP协议 POP3/SMTP协议: 接收 ...
随机推荐
- uwp应用在debug模式下运行正常,编译为release版本的时候抛出异常
原因是在代码中使用了dynamic关键字,导致release时.net native优化了代码造成元数据丢失 所以在代码中要尽量不用dynamic.
- 使用DHCP动态管理主机地址
- Actifio中如何分析Oracle备份恢复的报错
场景不同,可以分析的日志不同. 有关oracle备份 (L0/L1) 或者Oracle Log smart backups的日志:UDSAgent.log (on target host locate ...
- 转载一篇阿里云Terraform 开发指南
连接:https://www.jianshu.com/p/0aebea117cae 是一个比较详细的开发指南
- How to detect, enable and disable SMBv1, SMBv2, and SMBv3 in Windows and Windows Server
转自:https://support.microsoft.com/en-us/help/2696547/detect-enable-disable-smbv1-smbv2-smbv3-in-windo ...
- PHP之Trait详解
php从以前到现在一直都是单继承的语言,无法同时从两个基类中继承属性和方法,为了解决这个问题,php出了Trait这个特性 用法:通过在类中使用use 关键字,声明要组合的Trait名称,具体的Tra ...
- Java泛型相关总结(下)
约束与局限性 不能用基本类型实例化类型参数 不能像Pair<double>这样调用,只能Pair<Double>,原因是类型擦除 运行时类型查询只使用于原始类型 虚拟机中的对象 ...
- Docker系列(一)CentOS 6.5 离线安装、不升级内核
本特安装教程特点 1.由于是离线下载,需要提前下载好需要的依赖包 2.使用的版本为Centos6.5 3.不升级内核 4.提供异常解决方案. 安装过程 一.下载依赖包(使用能联网的节点) 依赖包可以自 ...
- day02 运算符
运算符2019-04-01 目录 一.算数运算符 + = * / % // ** 二.比较运算 > < == != >= ...
- Cobbler全自动批量安装部署Linux系统
说明: Cobbler服务器系统:CentOS 5.10 64位 IP地址:192.168.21.128 需要安装部署的Linux系统: eth0(第一块网卡,用于外网)IP地址段:192.168.2 ...