xedi/sendgrid

SendGrid PHP 库

2.0.3 2022-03-24 13:18 UTC

README

Dependabot Status Packagist

目录

安装

先决条件

安装包

将 XEDI SendGrid 添加到您的 composer.json 文件中,手动或使用 composer require 命令。

{
    "require": {
        "xedi/sendgrid": "^1"
    }
}
composer require xedi/sendgrid

我们建议使用后者,让 composer 来完成它的工作

快速开始

<?php
    require 'vendor/autoload.php';

    use Xedi\SendGrid\Contracts\Exception as SendGridException;
    use Xedi\SendGrid\SendGrid;

    SendGrid::setClient(
        SendGrid::getApiClient($api_key)
    );

    ($mailable = SendGrid::prepareMail())
        ->setSender('you@email.com', 'Joe Blogs')
        ->setSubject('Checkout XEDI\'s SendGrid library!')
        ->addTextContent('Hey,\n\rI found this great SendGrid library!')
        ->addHtmlContent('<body>Hey,<br/>I found this great SendGrid library!</body>')
        ->addRecipient('john.smith@email.com', 'John Smith');

    try {
        SendGrid::send($mailable);
    } catch (SendGridException $exception) {
        echo 'Caught exception: ' . (string) $exception;
    }

关于

此库使用 SendGrid v3 HTTP API。它基于“官方”库的一些限制,例如

  • 直接与 cURL 交互,限制您在测试期间拦截请求的能力。
  • 异常不针对返回的错误。

我们使用 GuzzleHttp 作为我们的 cURL 包装器,将处理 HTTP 请求的责任卸载。Guzzle 6 提供了拦截通过其客户端发出的 HTTP 请求的出色工具;有关更多信息 点击这里

如果您的有效负载有问题,SendGrid 仅返回一个错误代码!这是因为 SendGrid 的 API 不是 RESTful。我们的库将尝试提供上下文异常,例如 Xedi\SendGrid\Exceptions\Domain\SubjectException,如果 SendGrid 报告您的主件字段有问题,则会抛出该异常。

所有异常都可以使用我们实现的 ExceptionContract 来识别。

功能请求

此库是为内部项目开发的,其功能将随着我们需求的变化而增长。 然而,如果您发现我们不支持的任何内容,请通过 GitHub 问题提出。

安全漏洞

我们非常重视安全问题。如果您发现任何问题,请通过电子邮件发送给我们 development@xedi.com