承接 emailsherlock/client 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

emailsherlock/client

最新稳定版本:v0.2.0

Composer 安装命令:

composer require emailsherlock/client

包简介

Official PHP client for the EmailSherlock email-verification API.

README 文档

README

Official PHP client for the EmailSherlock email-verification API. Verify one address or a batch over HTTPS with an API key. Get an API key at https://emailsherlock.com/api. Want to try a single address by hand first? The free email verification tool runs the same checks in the browser.

PHP 8.1+. Requires ext-curl and ext-json. No other dependencies.

Install

composer require emailsherlock/client

Quick start

<?php
use Emailsherlock\Client;

// reads the key from the environment, never hard-code it
$es = new Client(getenv('ES_KEY'));

$result = $es->verify->single(['email' => 'jane@acme.com']);

echo $result->result; // 'valid'
echo $result->score;  // 0.95

Called with null, new Client(null) reads ES_KEY (or EMAILSHERLOCK_API_KEY) from the environment.

Batch

Up to 100 addresses per call. Each item is either a VerifyResult or a BatchItemError:

use Emailsherlock\VerifyResult;

$batch = $es->verify->batch(['emails' => ['jane@acme.com', 'sales@acme.com']]);

foreach ($batch->results as $item) {
    if ($item instanceof VerifyResult) {
        echo "{$item->email}: {$item->result}\n";
    } else { // BatchItemError
        echo "{$item->email} failed: {$item->error}\n";
    }
}

The result object

VerifyResult mirrors the API JSON:

property type meaning
email string the address you sent
result string valid · invalid · catch_all · disposable · role · unknown
mx bool the domain has reachable MX records
disposable bool throwaway / temporary-mail provider
role bool role address such as info@ or sales@
catchAll bool host accepts mail for any local part
score ?float 0–1 confidence, higher is safer to send to. null when the verdict is unknown
freshness string fresh · cached_recent · cached_stale_refreshed
deliverable ?bool the mailbox accepts mail. null when the API could not decide
reason ?string machine-readable explanation for the verdict, e.g. mailbox_accepts, mailbox_not_found, catch_all_domain, verification_pending
mxRecord ?string hostname of the highest-priority MX record
freeEmail ?bool the address lives on a free mail provider such as Gmail
checkedAt ?string ISO 8601 timestamp of the underlying verification
domain ?VerifyDomain domain-level intelligence, see below

The fields from deliverable down are null on responses from API servers that do not send them yet. Tolerate null rather than relying on presence.

The domain object

VerifyDomain describes the domain behind the address:

property type meaning
name string the domain
types ?array list of freemail, disposable, custom, company, government, education, public, isp
score ?float domain trust score, 0 to 100
spf ?bool SPF record present
dkim ?bool DKIM configured
dmarc ?bool DMARC record present
dmarcPolicy ?string none · quarantine · reject
mtaSts ?bool MTA-STS policy published
tlsRpt ?bool TLS-RPT record present
bimi ?bool BIMI record present
dane ?bool DANE/TLSA records present
blacklists ?int number of DNS blacklists currently listing the domain's mail IPs
dnssec ?string secure · insecure · bogus
caa ?bool CAA record present

Credits and rate limits

After every call:

$es->creditsRemaining;  // e.g. 41.0
$es->rateLimit;         // ['limit' => 60, 'remaining' => 59, 'reset' => 1700000000]

Errors

Every failure throws a subclass of Emailsherlock\Exception\EmailsherlockException:

class HTTP extras
AuthenticationException 401 -
ForbiddenException 403 requiredScope
InsufficientCreditsException 402 creditsRequired, creditsRemaining
RateLimitException 429 retryAfter, limit, remaining, reset
ValidationException 400 / 422 the request body was rejected
ServiceUnavailableException 503 credit auto-refunded

Each exception exposes ->statusCode and ->errorCode (the API's string code, e.g. rate_limit_exceeded).

use Emailsherlock\Exception\RateLimitException;

try {
    $es->verify->single(['email' => 'jane@acme.com']);
} catch (RateLimitException $e) {
    echo "retry after {$e->retryAfter}s";
}

Options

new Client(
    apiKey: getenv('ES_KEY'),
    baseUrl: 'https://api.emailsherlock.com', // default
    timeout: 30.0,                             // default
);

License

MIT. Full API reference: https://emailsherlock.com/api/docs

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-06-06

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固