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协议: 接收 ...
随机推荐
- uclibc,eglibc,glibc,Musl-libc之间的区别和联系
转自:https://www.sohu.com/a/164202127_424963 1.Glibc glibc = GNU C Library 是GNU项(GNU Project)目,所实现的 C语 ...
- servlet_3
ServletContext 介绍 提供的功能 servlet中获取servletcontext实例 servletcontext接口的方法 package com.fgy; import java. ...
- java_oop_三大特性
继承 概念 优点 语法 使用 有些父类成员不能被继承 private成员变量和方法 子类与父类不在同包,使用默认访问权限的成员 ...
- asp.net core webapi处理Post请求中的request payload
request payload的Content-Type实际上是text/plain的,如果请求的 Content-Type 为 application/json,这将导致415 Unsupporte ...
- Git与Bitbucket配合使用
1 , 简介 Git : Git是目前世界上最先进的分布式版本控制系统 Bitbucket : BitBucket 是一家代码托管网站 , 类似与GitHub , 不同的是GitHub更专注于开源 , ...
- 记一次nmap扫描信息收集过程
1.首先扫描网段内存活主机 nmap -sP 192.168.1.1-254 2.获取到存活主机后,开始进行端口扫描 nmap -p1-1000 192.168.1.66 可得到端口状态: filte ...
- Python中的@符号
1.基本含义 @符号用做函数的修饰符,可以在模块或者类的定义层内对函数进行修饰,出现在函数定义的前一行,不允许和函数定义在同一行. 一个修饰符就是一个函数,它将被修饰的函数作为参数,并返回修饰后的同名 ...
- windows 7 安装时提示:安装程序无法创建新的系统分区
window7纯净通过U盘引导进行硬盘安装: 系统提示"安装程序无法创建新的系统分区,也无法定位现有分区",导致安装无法进行. 解决办法1: 一种非常简单的办法,首先需要将C盘重新 ...
- Python【每日一问】14
问:请介绍一下Python中的 import 机制 答: import 语句结合了两个操作:1.它先搜索指定名称的模块 2.将搜索结果绑定到当前作用域中的名称. 如果指定名称的模块未找到,则会引发 M ...
- 简单Hash函数LongHash
import java.security.SecureRandom; import java.util.Random; public class LongHash { private static l ...