gostellarco / nylas-php
Nylas PHP SDK (API版本2.1)
Requires
- php: >=7.4
- ext-json: *
- guzzlehttp/guzzle: >=6.5
- respect/validation: ^2.0
- zbateson/mail-mime-parser: ^1.2
Requires (Dev)
- phpunit/phpunit: ^9.2
README

Nylas PHP SDK
PHP绑定Nylas REST API (V2.1)。 https://docs.nylas.com/reference
未来更新中,我会尝试跟进NyLas 变更日志。
最后检查时间: 加拿大和爱尔兰的仪表板发布
有什么新功能?
- 支持API 2.1
- 此SDK中实现了所有Nylas API。
- 支持发送和获取原始类型的消息
- 支持异步批量上传和下载
— 联系人图片下载
— 文件上传和下载 - 方法所需参数几乎与Nylas官方API所需参数相同。
- 支持异步批量获取、删除和发送(自版本3.1起)。
- 链式调用和良好的代码提示,易于使用

安装(自版本4.0起需要PHP 7.4)
3.x版本适用于php >= 7.3(分支3.0)
4.x版本适用于php >= 7.4(主分支)
此库可在https://packagist.org.cn/packages/lanlin/nylas-php上找到
您可以通过运行以下命令进行安装
composer require lanlin/nylas-php
用法
App ID和密钥
在与Nylas REST API交互之前,
您需要在https://www.nylas.com/创建Nylas开发者帐户。
创建开发者帐户后,您可以创建一个新应用以生成App ID / 密钥对。
通常,您应该将App ID和密钥存储在环境变量中,以避免将其添加到源代码控制中。
测试项目使用配置文件,以便更容易开始。
初始化Nylas-PHP
提示: 自版本4.1.2起已移除'off_decode_error',请参阅错误 & 异常
use Nylas\Client; $options = [ 'debug' => true, 'region' => 'oregon', // server region, can be oregon, ireland or canada, default is oregon 'log_file' => dirname(__FILE__) . '/test.log', // a file path or a resource handler 'account_id' => 'your account id', 'access_token' => 'your access token', 'client_id' => 'your client id', // required 'client_secret' => 'your client secret' // required ]; $nylas = new Client($options);
选项设置
您可以使用以下方法修改选项
$nylas->Options()->

批量请求
大多数带有get & delete前缀的方法都支持批量请求。
$id = 'id_xxx'; $ids = ['id_xxx', 'id_yyy', ...]; // one per time $dataA = $nylas->Contacts()->Contact()->getContact($id); $dataB = $nylas->Contacts()->Contact()->deleteContact($id); // batch request $dataC = $nylas->Contacts()->Contact()->getContact($ids); $dataD = $nylas->Contacts()->Contact()->deleteContact($ids);
有关批量请求的更多详细信息,您应该阅读源代码。
抱歉,我没有时间编写文档。
身份验证
您有两种方式可以验证用户的应用程序。
托管和本地都受支持。
以下是服务器端(三腿)OAuth示例
- 您将用户重定向到Nylas登录页面,同时包含您的App Id和密钥
- 用户登录
- 她被重定向到您的回调URL,同时带有访问代码
- 您使用此访问代码从API获取授权令牌
有关使用Nylas进行身份验证的更多信息,
请访问开发者文档。
在实践中,Nylas REST API客户端将此简化为两个步骤。
步骤1:将用户重定向到Nylas
$params = [ 'state' => 'testing', 'login_hint' => 'test@gmail.com', 'redirect_uri' => 'https://www.test.com/redirect_callback', ]; // generate the url that your user need be redirect to. $url = $nylas->Authentication()->Hosted()->getOAuthAuthorizeUrl($params);
步骤2:您的用户登录
步骤3:您从Nylas回调中获取访问代码
请自行实现上述2 & 3步骤。
步骤4:使用访问代码获取授权令牌
$data = $nylas->Authentication()->Hosted()->postOAuthToken($params); // save your token some where // or update the client option $nylas->Options()->setAccessToken("pass the token you got");
错误与异常
-
从nylas返回的常见错误代码被包装成异常(参见
src/Exceptions
),异常代码与nylas API 错误列表相同 -
当响应数据不是有效的JSON字符串或者甚至不是JSON内容类型时,您将得到如下数组
[ 'httpStatus' => 'http status code', 'invalidJson' => true, 'contentType' => 'response header content type', 'contentBody' => 'response body content', ]
-
对于所有以异步模式执行的方法,在发生错误时不会抛出异常,而是返回一个包含所有数据和异常的数组,如下所示
[ // ... [ 'error' => true, 'code' => 'exception code', 'message' => 'exception message', 'exception' => 'exception instance', ], // ... ]
-
某些电子邮件提供商可能不支持所有功能,例如:日历、事件。因此,您可能会得到一个名为
BadRequestException
的异常,代码为400,并带有相应的消息Malformed or missing a required parameter, or your email provider not support this.
-
log_file
参数仅在debug
设置为true
时才起作用,此时将记录HTTP请求的详细信息。提示:nylas-php使用guzzlehttp进行HTTP请求。但guzzlehttp只支持资源类型作为调试处理程序(cURL CURLOPT_STDERR需要此功能)。
对于想要使用psr/log接口进行调试的人来说,您可以初始化一个临时资源,并将处理程序传递给nylas-php,然后在调用一些方法后从临时资源中获取日志内容。
$handler = fopen('php://temp', 'w+'); $options = [ 'log_file' => $handler, ... ]; $nylas = new Client($options); $nylas->doSomething(); .... rewind($handler); $logContent = stream_get_contents($handler); fclose($handler); $yourPsrLogger->debug($logContent);
启动测试
- 初始化composer依赖项
composer install
- 在
tests/AbsCase.php
中添加您的信息 - 使用
composer run-script test
启动测试 - 运行测试的另一种方法:
./tests/do.sh foo.php --filter fooMethod
,请参阅tests/do.sh
支持的方法
方法所需参数几乎与Nylas官方API所需参数相同。
对于更详细的信息,您可以查看该方法的测试或源代码。
账户
$nylas->Accounts()->Account()->xxx(); $nylas->Accounts()->Manage()->xxx();
身份验证
$nylas->Authentication()->Hosted()->xxx(); $nylas->Authentication()->Native()->xxx();
日历
$nylas->Calendars()->Calendar()->xxx();
联系人
$nylas->Contacts()->Contact()->xxx();
// multiple contact pictures download $params = [ [ 'id' => 'contact id', 'path' => 'this can be a file path, resource or stream handle', ], [ 'id' => 'xxxx', 'path' => dirname(__FILE__) . '/correct.png', ], // ... ]; $nylas->Contacts()->Contact()->getContactPicture($params);
差异
$nylas->Deltas()->Delta()->xxx();
草稿
$nylas->Drafts()->Draft()->xxx(); $nylas->Drafts()->Sending()->xxx();
事件
$nylas->Events()->Event()->xxx();
文件
$nylas->Files()->File()->xxx();
// multiple files download $params = [ [ 'id' => 'file id', 'path' => 'this can be a file path, resource or stream handle', ], [ 'id' => 'xxxx', 'path' => dirname(__FILE__) . '/correct.png', ], // ... ]; $nylas->Files()->File()->downloadFile($params); // multiple files upload $params = [ [ 'contents' => 'this can be a file path, resource or stream handle', 'filename' => 'your file name' ], [ 'contents' => dirname(__FILE__) . '/correct.png', 'filename' => 'test_correct.png' ], // ... ]; $nylas->Files()->File()->uploadFile($params);
文件夹
$nylas->Folders()->Folder()->xxx();
标签
$nylas->Labels()->Label()->xxx();
作业状态
$nylas->JobStatuses()->JobStatus()->xxx();
消息
$nylas->Messages()->Message()->xxx(); $nylas->Messages()->Search()->xxx(); $nylas->Messages()->Sending()->xxx(); $nylas->Messages()->Smart()->xxx();
线程
$nylas->Threads()->Search()->xxx(); $nylas->Threads()->Thread()->xxx(); $nylas->Threads()->Smart()->xxx();
Webhooks
$nylas->Webhooks()->Webhook()->xxx();
贡献
有关更多使用示例,请查看测试。
请随意使用它,如果您修复了任何内容或添加了功能,请随时向我发送pull request。
许可证
本项目受MIT许可证许可。