腾讯企业邮箱单点登录 php,新版QQ企业邮箱接口PHP SDK

qq-exmail

安装

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

)

第一个参数为配置项。

第二个参数是一个符合 PSR-16 规范的缓存对象,用于保存各个应用的 access token,如果不传则默认使用内存缓存,即每次生命周期的各个应用第一次请求都会先通过 api 获得对应的 access token。Laravel 项目可以使用这个类 SimpleCacheBridge.php

第三个参数是一个 GuzzleHttp 对象,没有特殊需求可以保持 null。

第四个参数是一个符合 PSR-3 规范的日志对象,用于打印日志,如果留空则不答应任何日志。

配置项

corp_id 可以在企业邮箱的"工具箱"->"应用中心"页面最下方找到。

corp_secrets 从"应用中心"页面进入各个应用,可以找到对应的 secret。对于用不到的应用,可以不配置对应的 secret。

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 列表

部门管理

$exmail->department->create([

'name' => '技术部',

'parentid' => 1,

]);

$exmail->department->update($departmentId, [

'name' => '技术部',

'parentid' => 1,

'order' => 100

]);

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

// 获取全部部门

$exmail->department->departmentList();

// 获取 $departmentId 部门及其子部门

$exmail->department->departmentList($departmentId);

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

成员管理

$exmail->user->create([

'userid' => 'leo108@exmail.com',

'name' => 'leo108',

'department' => [1],

'password' => 'secret',

'gender' => Leo108\QQExmail\Contact\User::GENDER_MALE,

]);

$exmail->user->update('leo108@exmail.com', [

'name' => 'Leo Chen',

]);

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

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

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

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

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

邮件群组管理

$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,

]);

$exmail->group->update('group_name@exmail.com', [

'groupname' => '技术部邮件组',

]);

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

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

功能设置

$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,

]);

$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'],

]);

系统日志

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

$exmail->log->mail(Leo108\QQExmail\SystemLog\Log::MAIL_TYPE_RECEIVE_AND_SEND, '2016-10-01', '2016-10-07', [

'userid' => 'leo108@exmail.com',

'subject' => '查询关键词'

]);

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

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

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

新邮件提醒

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

获取邮件未读数(回调模式)尚未实现

单点登录

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

其他

本项目是基于我的另外一个开源项目 php_sdk_skeleton 开发的。 通过 php_sdk_skeleton 可以快速构建基于 Http API 的 SDK。

License

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MailKit 是一个用于.NET平台的开源邮件库,它提供了连接和操作各种邮件服务器的功能。要连接腾讯企业邮箱,需要使用MailKit提供的API,并根据腾讯企业邮箱的设置进行配置。 首先,我们需要在项目中引用MailKit库。可以通过NuGet包管理器来安装,或者手动下载并添加到项目引用。 接下来,我们需要创建一个MailKit的SmtpClient对象来连接腾讯企业邮箱的SMTP服务器。这是发送邮件所必需的步骤。 ```csharp using MailKit.Net.Smtp; using MailKit.Security; using MimeKit; class Program { static void Main() { using (var client = new SmtpClient()) { client.Connect("smtp.exmail.qq.com", 465, SecureSocketOptions.SslOnConnect); // 腾讯企业邮箱要求使用用户邮箱和密码进行身份验证 client.Authenticate("[email protected]", "your_password"); // 创建邮件对象 var message = new MimeMessage(); message.From.Add(new MailboxAddress("发件人名称", "[email protected]")); message.To.Add(new MailboxAddress("收件人名称", "[email protected]")); message.Subject = "邮件主题"; message.Body = new TextPart("plain") { Text = "邮件正文" }; // 发送邮件 client.Send(message); client.Disconnect(true); } } } ``` 需要注意的是,连接腾讯企业邮箱SMTP服务器时,通常使用ssl加密连接,并且要使用完整的邮箱地址和密码进行身份验证。 以上是基本的连接和发送邮件的示例,可以根据自己的需求进行进一步的配置和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值