PHPackages                             waywake/qq-exmail - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. waywake/qq-exmail

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

waywake/qq-exmail
=================

新版QQ企业邮箱SDK

0.2(1mo ago)05MITPHPPHP ^8.2

Since Apr 24Pushed 1mo agoCompare

[ Source](https://github.com/waywake/qq-exmail)[ Packagist](https://packagist.org/packages/waywake/qq-exmail)[ RSS](/packages/waywake-qq-exmail/feed)WikiDiscussions master Synced 1w ago

READMEChangelogDependencies (3)Versions (2)Used By (0)

qq-exmail
=========

[](#qq-exmail)

新版 QQ 企业邮箱接口 SDK，接口文档 [https://exmail.qq.com/qy\_mng\_logic/doc#10001](https://exmail.qq.com/qy_mng_logic/doc#10001)

安装
--

[](#安装)

`composer require leo108/qq-exmail -vvv`

快速开始
----

[](#快速开始)

```
$config = [
    'corp_id'      => 'CORP_ID',
    'corp_secrets' => [
        'contact'          => '通讯录管理 Secret',
        'unique_login'     => '单点登录 Secret',
        'mail_notice'      => '新邮件提醒 Secret',
        'function_setting' => '功能设置 Secret',
        'system_log'       => '日志查询 Secret'
    ],
    'log'          => [
        'format'            => '{method} {url} {code} {res_header_Content-Length}',
        'hide_access_token' => true,
    ],
];
$exmail = new Leo108\QQExmail\QQExmail($config);

// 创建一个新用户， 更多参数请参考 API 文档
$exmail->user->create([
    'userid'     => 'leo108@exmail.com',
    'name'       => 'leo108',
    'department' => [1],
    'password'   => 'secret',
    'gender'     => Leo108\QQExmail\Contact\User::GENDER_MALE,   // 如果你不想踩坑，还是乖乖用我提供的常量吧 :)
]);

```

构造函数
----

[](#构造函数)

```
public function __construct(
    array $config = [],
    Psr\SimpleCache\CacheInterface $cache = null,
    GuzzleHttp\ClientInterface $httpClient = null,
    Psr\Log\LoggerInterface $logger = null
)

```

- 第一个参数为[配置项](#%E9%85%8D%E7%BD%AE%E9%A1%B9)。
- 第二个参数是一个符合 PSR-16 规范的缓存对象，用于保存各个应用的 access token，如果不传则默认使用内存缓存，即每次生命周期的各个应用第一次请求都会先通过 api 获得对应的 access token。Laravel 项目可以使用这个类 [SimpleCacheBridge.php](https://gist.github.com/leo108/bd7559654c52000cc9774a80b072c629)
- 第三个参数是一个 [GuzzleHttp](https://github.com/guzzle/guzzle) 对象，没有特殊需求可以保持 `null`。
- 第四个参数是一个符合 PSR-3 规范的日志对象，用于打印日志，如果留空则不答应任何日志。

配置项
---

[](#配置项)

- `corp_id` 可以在企业邮箱的"工具箱"-&gt;"应用中心"页面最下方找到。
- `corp_secrets` 从"应用中心"页面进入各个应用，可以找到对应的 secret。对于用不到的应用，可以不配置对应的 secret。
- `log.format` 定义日志格式，各个字段可以参考
- `log.hide_access_token` 如果设定为 `true` 则会隐藏日志中 access token 的值，避免 token 泄露。

异常
--

[](#异常)

本项目中所有的异常均继承自 `Leo108\QQExmail\Core\Exceptions\QQExmailException`

- `Leo108\QQExmail\Core\Exceptions\GetAccessTokenException` 使用 corp id 和 corp secret 换取 access token 失败
- `Leo108\QQExmail\Core\Exceptions\MissingSecretException` 使用应用却没有配置该应用的 secret
- `Leo108\QQExmail\Core\Exceptions\InvalidArgumentException` 初始化时传入的配置有误
- `Leo108\QQExmail\Core\Exceptions\ApiException` 当 API 接口返回的 errcode 字段不为 0 时抛出

API 列表
------

[](#api-列表)

- [部门管理](#%E9%83%A8%E9%97%A8%E7%AE%A1%E7%90%86)
- [成员管理](#%E6%88%90%E5%91%98%E7%AE%A1%E7%90%86)
- [邮件群组管理](#%E9%82%AE%E4%BB%B6%E7%BE%A4%E7%BB%84%E7%AE%A1%E7%90%86)
- [功能设置](#%E5%8A%9F%E8%83%BD%E8%AE%BE%E7%BD%AE)
- [系统日志](#%E7%B3%BB%E7%BB%9F%E6%97%A5%E5%BF%97)
- [新邮件提醒](#%E6%96%B0%E9%82%AE%E4%BB%B6%E6%8F%90%E9%86%92)
- [单点登录](#%E5%8D%95%E7%82%B9%E7%99%BB%E5%BD%95)

### 部门管理

[](#部门管理)

创建部门 [https://exmail.qq.com/qy\_mng\_logic/doc#10008](https://exmail.qq.com/qy_mng_logic/doc#10008)

```
$exmail->department->create([
    'name' => '技术部',
    'parentid' => 1,
]);

```

更新部门 [https://exmail.qq.com/qy\_mng\_logic/doc#10009](https://exmail.qq.com/qy_mng_logic/doc#10009)

```
$exmail->department->update($departmentId, [
    'name' => '技术部',
    'parentid' => 1,
    'order' => 100
]);

```

删除部门 [https://exmail.qq.com/qy\_mng\_logic/doc#10010](https://exmail.qq.com/qy_mng_logic/doc#10010)

```
$exmail->department->delete($departmentId);

```

获取部门列表 [https://exmail.qq.com/qy\_mng\_logic/doc#10011](https://exmail.qq.com/qy_mng_logic/doc#10011)

```
// 获取全部部门
$exmail->department->departmentList();

// 获取 $departmentId 部门及其子部门
$exmail->department->departmentList($departmentId);

```

查找部门 [https://exmail.qq.com/qy\_mng\_logic/doc#10012](https://exmail.qq.com/qy_mng_logic/doc#10012)

```
$exmail->department->search('关键词', true); // 第二个参数为 true 时则为模糊搜索

```

### 成员管理

[](#成员管理)

创建成员 [https://exmail.qq.com/qy\_mng\_logic/doc#10014](https://exmail.qq.com/qy_mng_logic/doc#10014)

```
$exmail->user->create([
    'userid'     => 'leo108@exmail.com',
    'name'       => 'leo108',
    'department' => [1],
    'password'   => 'secret',
    'gender'     => Leo108\QQExmail\Contact\User::GENDER_MALE,
]);

```

更新成员 [https://exmail.qq.com/qy\_mng\_logic/doc#10015](https://exmail.qq.com/qy_mng_logic/doc#10015)

```
$exmail->user->update('leo108@exmail.com', [
    'name' => 'Leo Chen',
]);

```

删除成员 [https://exmail.qq.com/qy\_mng\_logic/doc#10016](https://exmail.qq.com/qy_mng_logic/doc#10016)

```
$exmail->user->delete('leo108@exmail.com');

```

获取成员 [https://exmail.qq.com/qy\_mng\_logic/doc#10017](https://exmail.qq.com/qy_mng_logic/doc#10017)

```
$exmail->user->get('leo108@exmail.com');

```

获取部门成员 [https://exmail.qq.com/qy\_mng\_logic/doc#10018](https://exmail.qq.com/qy_mng_logic/doc#10018)

```
$exmail->user->simpleList($departmentId, true); // 第二个参数为 true 时递归获取子部门成员

```

获取部门成员（详情） [https://exmail.qq.com/qy\_mng\_logic/doc#10019](https://exmail.qq.com/qy_mng_logic/doc#10019)

```
$exmail->user->userList($departmentId, true); // 第二个参数为 true 时递归获取子部门成员

```

批量检查帐号 [https://exmail.qq.com/qy\_mng\_logic/doc#10020](https://exmail.qq.com/qy_mng_logic/doc#10020)

```
$exmail->user->batchCheck(['leo108@exmail.com', 'test@exmail.com']);

```

### 邮件群组管理

[](#邮件群组管理)

创建邮件群组 [https://exmail.qq.com/qy\_mng\_logic/doc#10022](https://exmail.qq.com/qy_mng_logic/doc#10022)

```
$exmail->group->create([
    'groupid'    => 'group_name@exmail.com',
    'groupname'  => '测试邮件群组',
    'userlist'   => ['leo108@exmail.com', 'test@exmail.com'],
    'allow_type' => Leo108\QQExmail\Contact\Group::ALLOW_TYPE_ALL,
]);

```

更新邮件群组 [https://exmail.qq.com/qy\_mng\_logic/doc#10023](https://exmail.qq.com/qy_mng_logic/doc#10023)

```
$exmail->group->update('group_name@exmail.com', [
    'groupname' => '技术部邮件组',
]);

```

删除邮件群组 [https://exmail.qq.com/qy\_mng\_logic/doc#10024](https://exmail.qq.com/qy_mng_logic/doc#10024)

```
$exmail->group->delete('group_name@exmail.com');

```

获取邮件群组信息 [https://exmail.qq.com/qy\_mng\_logic/doc#10025](https://exmail.qq.com/qy_mng_logic/doc#10025)

```
$exmail->group->get('group_name@exmail.com');

```

### 功能设置

[](#功能设置)

获取功能属性 [https://exmail.qq.com/qy\_mng\_logic/doc#10047](https://exmail.qq.com/qy_mng_logic/doc#10047)

```
$exmail->userOption->get('leo108@exmail.com', [
    Leo108\QQExmail\FunctionSetting\UserOption::TYPE_FORCE_SSL,
    Leo108\QQExmail\FunctionSetting\UserOption::TYPE_IMAP_SMTP,
    Leo108\QQExmail\FunctionSetting\UserOption::TYPE_POP_SMTP,
    Leo108\QQExmail\FunctionSetting\UserOption::TYPE_ENABLE_SSL,
]);

```

更改功能属性 [https://exmail.qq.com/qy\_mng\_logic/doc#10048](https://exmail.qq.com/qy_mng_logic/doc#10048)

```
$exmail->userOption->update('leo108@exmail.com', [
    ['type' => Leo108\QQExmail\FunctionSetting\UserOption::TYPE_FORCE_SSL, 'value' => '1'],
    ['type' => Leo108\QQExmail\FunctionSetting\UserOption::TYPE_IMAP_SMTP, 'value' => '1'],
    ['type' => Leo108\QQExmail\FunctionSetting\UserOption::TYPE_POP_SMTP, 'value' => '1'],
    ['type' => Leo108\QQExmail\FunctionSetting\UserOption::TYPE_ENABLE_SSL, 'value' => '1'],
]);

```

### 系统日志

[](#系统日志)

查询邮件概况 [https://exmail.qq.com/qy\_mng\_logic/doc#10027](https://exmail.qq.com/qy_mng_logic/doc#10027)

```
$exmail->log->mailStatus('exmail.com', '2016-10-01', '2016-10-07');

```

查询邮件 [https://exmail.qq.com/qy\_mng\_logic/doc#10028](https://exmail.qq.com/qy_mng_logic/doc#10028)

```
$exmail->log->mail(Leo108\QQExmail\SystemLog\Log::MAIL_TYPE_RECEIVE_AND_SEND, '2016-10-01', '2016-10-07', [
    'userid'  => 'leo108@exmail.com',
    'subject' => '查询关键词'
]);

```

查询成员登录 [https://exmail.qq.com/qy\_mng\_logic/doc#10029](https://exmail.qq.com/qy_mng_logic/doc#10029)

```
$exmail->log->login('leo108@exmail.com', '2016-10-01', '2016-10-07');

```

查询批量任务 [https://exmail.qq.com/qy\_mng\_logic/doc#10030](https://exmail.qq.com/qy_mng_logic/doc#10030)

```
$exmail->log->batchJob('2016-10-01', '2016-10-07');

```

查询操作记录 [https://exmail.qq.com/qy\_mng\_logic/doc#10031](https://exmail.qq.com/qy_mng_logic/doc#10031)

```
$exmail->log->operation(Leo108\QQExmail\SystemLog\Log::OPERATION_TYPE_ALL, '2016-10-01', '2016-10-07');

```

### 新邮件提醒

[](#新邮件提醒)

获取邮件未读数 [https://exmail.qq.com/qy\_mng\_logic/doc#10033](https://exmail.qq.com/qy_mng_logic/doc#10033)

```
$exmail->mail->newAccount('leo108@exmail.com', '2016-10-01', '2016-10-07');

```

获取邮件未读数（回调模式）尚未实现

### 单点登录

[](#单点登录)

获取登录企业邮的url [https://exmail.qq.com/qy\_mng\_logic/doc#10036](https://exmail.qq.com/qy_mng_logic/doc#10036)

```
$exmail->uniqueLogin->getLoginUrl('leo108@exmail.com');

```

其他
--

[](#其他)

本项目是基于我的另外一个开源项目 [php\_sdk\_skeleton](https://github.com/leo108/php_sdk_skeleton) 开发的。 通过 php\_sdk\_skeleton 可以快速构建基于 Http API 的 SDK。

License
-------

[](#license)

[MIT](https://github.com/leo108/qq-exmail/blob/master/LICENSE).

###  Health Score

36

—

LowBetter than 79% of packages

Maintenance90

Actively maintained with recent releases

Popularity4

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

 Bus Factor1

Top contributor holds 85.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

46d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/3872854a6aea1f16610c9b1125ee7058281d69223cdf9b5ed3396ff06a9fbee0?d=identicon)[xAmast](/maintainers/xAmast)

---

Top Contributors

[![leo108](https://avatars.githubusercontent.com/u/1551716?v=4)](https://github.com/leo108 "leo108 (12 commits)")[![i5shuyi](https://avatars.githubusercontent.com/u/58246546?v=4)](https://github.com/i5shuyi "i5shuyi (2 commits)")

### Embed Badge

![Health badge](/badges/waywake-qq-exmail/health.svg)

```
[![Health](https://phpackages.com/badges/waywake-qq-exmail/health.svg)](https://phpackages.com/packages/waywake-qq-exmail)
```

###  Alternatives

[laravel/framework

The Laravel Framework.

34.7k532.1M19.2k](/packages/laravel-framework)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

744284.3k34](/packages/civicrm-civicrm-core)[tempest/framework

The PHP framework that gets out of your way.

2.2k31.1k11](/packages/tempest-framework)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

585.4M506](/packages/shopware-core)[nutgram/nutgram

The Telegram bot library that doesn't drive you nuts

726266.3k8](/packages/nutgram-nutgram)[run-as-root/magento2-prometheus-exporter

Magento2 Prometheus Exporter

68353.9k](/packages/run-as-root-magento2-prometheus-exporter)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
