最近需要在项目开发的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. 命令生成所有数据库表模型以及 CRUD

    将下列代码写到文件复制到项目 console\controller 目录下: <?php namespace console\controllers; use Yii; use yii\cons ...

  2. Reactor和Proactor

    服务器编程框架 IO处理单元 :处理用户连接,读写网络数据:(单机) :作为接入服务器,实现负载均衡;(集群) 请求队列 :各个单元之间通信的抽象,通常被实现为池的一部分:一个单元通知另外一个单元,或 ...

  3. devC++代码格式化对齐的快捷键

    devC++代码格式化对齐的快捷键是ctrl + shift + a ctrl + 左右键可以使光标移动一个单词的距离 shirt + 左右键可以选中光标左右的一个字符

  4. source-insight 常用操作

    [Ctrl + ] 跳转到函数.宏.变量 等定义处. [Alt  > ] 跳转到最近光标停留位置. [Alt  < ] 跳转到上次近光标停留位置. [Ctrl Shift [ ] 块位置开 ...

  5. MQTT研究之EMQ:【SSL证书链验证】

    1. 创建证书链(shell脚本) 客户端证书链关系: rootCA-->chainca1-->chainca2-->chainca3 ca caCert1 caCert2 caCe ...

  6. CentOS 7.x 如何关闭 numa

    CentOS7.x中发现 numactl --interleave=all 执行失败. CentOS7.x中可以通过下面的方式关闭 numa: 1. 编辑 /etc/default/grub 文件,如 ...

  7. 【Leecode】两数之和

    学习使用标准模板库(STL)中的map,hash_map.涉及数据结构知识:哈希表,红黑树. map的使用方法 https://www.cnblogs.com/fnlingnzb-learner/p/ ...

  8. 在socket的server端处理client端发来的数据

    一.楔子 最近做了一个需求遇到一个坑,归结成一个小问题,其实就是在socket的server端处理client端发来的数据的问题,现将这个问题总结一下,本文将数据在server端以字典的形式存储. 另 ...

  9. iOS 12 tabbar 从二级页面返回时,出现跳动解决办法

    APP push一个界面,返回的时候,tabBar上的图标和文字出现一个从上往下的神奇动画 经过测试发现,如果使用系统OS12.1 UINavigationController + UITabBarC ...

  10. [UE4]用Format Text进行调试

    {姓名},在{时间}进来了 “{姓名}”和“{时间}”会自动变成一个变量.