最近需要在项目开发的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获取腾讯企业邮箱信息后的解码处理的更多相关文章

  1. 利用腾讯企业邮箱开放API获取账户未读邮件数初探

    公司一直使用腾讯提供的免费企业邮箱服务,今天用管理员帐户登录后发现,原来现在腾讯的企业邮箱也开放了部分API 你可以通过开放接口实现以下功能: 数据同步 数据同步可以帮助你同步部门成员信息,你还可以创 ...

  2. ubuntu 14.04 下evolution邮箱客户端设置(腾讯企业邮箱)

    安装 evolution 有PPA可用,支持 Ubuntu 14.04 及衍生系统.打开终端,输入以下命令: sudo add-apt-repository ppa:fta/gnome3 sudo a ...

  3. outlook2016用Exchange轻松绑定腾讯企业邮箱

    系统版本:Win10 X64 1709 英文版 邮箱:Outlook2016 背景知识: 1.发送邮件均使用SMTP协议(SMTP 全称“Simple Mail Transfer Protocol”, ...

  4. 解决使用Foxmail客户端软件不能收取腾讯企业邮箱的全部邮件

    一般说来,使用Foxmail客户端软件收取邮箱时,需要作如下几步: 1.进入邮箱web界面授权开启POP3/SMTP服务.IMAP/SMTP等服务 2.在邮箱web界面配置收取选项,可选择收取全部邮件 ...

  5. 腾讯企业邮箱POP,SMTP分别是什么

    腾讯企业邮箱在做域名解析的时候不用做pop3和 smtp设置,可以使用下列的协议:   POP3/SMTP协议 接收邮件服务器:pop.exmail.qq.com (端口 110),使用SSL,端口号 ...

  6. centos 邮件服务 腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25 收邮件协议:pop3 端口110 iredmail安装配置 使用邮箱系统 第三十一节课

    centos   邮件服务  腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25  收邮件协议:pop3 端口110  iredmail安装配置 ...

  7. 解析腾讯企业邮箱到自己域名,设置mail的cname

    之前注册了腾讯企业邮的免费邮箱,后来想把企业邮箱和域名绑定起来,发现了一些问题. 先来看正常的部分,假设你已经注册过了腾讯企业邮箱免费版,并且已经绑定好了域名. 然后在域名提供商那里设置域名解析的MX ...

  8. python 发送邮件 <QQ+腾讯企业邮箱>

    一.使用QQ邮箱或者腾讯企业邮箱 python 发送邮件属于网络编程方向的,在工作中,我需要经常用邮件来检测我的程序运行状况.使用起来十分方便,这里我就用腾讯企业邮箱作为我的收发邮箱来使用. 使用py ...

  9. C#发送腾讯企业邮箱

    腾讯企业邮箱客户端配置介绍 http://email-qq.cn/tengxun/201610303793.html?akvezc=smt0n2 POP3/SMTP协议 POP3/SMTP协议: 接收 ...

随机推荐

  1. 修改应用进程open file值

    本文用于记录java应用日志too many open files报错解决方法 操作系统:RHEL5.8 一.修改配置文件 1.vim /etc/security/limits.conf 加上:* s ...

  2. 使用Postfix与Dovecot部署邮件系统

  3. 创建一个dynamics 365 CRM online plugin (六) - Delete plugin from CRM

    我们之前都学习到怎么添加,debug还有update plugin. 今天带大家过一下怎么从CRM instance当中删除plugin. 首先让我们打开Settings -> Customiz ...

  4. HanLP 自然语言处理 for nodejs

    HanLP 自然语言处理 for nodejs ·支持中文分词(N-最短路分词.CRF分词.索引分词.用户自定义词典.词性标注),命名实体识别(中国人名.音译人名.日本人名.地名.实体机构名识别),关 ...

  5. Linux printf命令详解

    Linux printf命令 printf命令模仿了C语言中的printf()函数.主要作用是输出文本,按照我们指定的格式输出文本.还有一个输出文本的命令echo,在输出文本时,echo会换行.pri ...

  6. Oracle数据csv导入

    打开工具,在tool下面有个Text Importer 先选择Data from textfile选项卡 然后选择 Open data file ,打开要导入的文件 1\ 2\ 再先选择Data to ...

  7. IO队列深度max_queue_depth对系统性能的影响

    前段时间,发生了一个问题引起了我对IO队列深度的研究. 存储服务器中linux kernel的mpt2sas驱动模块,将max_queue_depth设置为1024时,引起系统加载驱动时卡死,而调整为 ...

  8. 防止shell script多次运行

    一个思路是在script初期检测系统中是否存在同名进程. ] then echo "This script is already running. Exit." else whil ...

  9. CSS的块级元素和内联元素的概念

    三生有幸,偶然之下知道了<CSS世界>这本书,让我产生了探究 CSS 的想法. 这里对 CSS 中的块级元素和内联元素的概念做一个简单的整理. 可能对于我们前端开发人员来讲,一般接触到的元 ...

  10. centos7安装nginx,以及使用node测试反向代理

    1.添加nginx的安装源 vi /etc/yum.repos.d/nginx.repo 2.输入下面内容,并保存退出 [nginx] name=nginx repo baseurl=http://n ...