PHPackages                             letmesendemail/letmesendemail-php - 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. [API Development](/categories/api)
4. /
5. letmesendemail/letmesendemail-php

ActiveLibrary[API Development](/categories/api)

letmesendemail/letmesendemail-php
=================================

LetMeSendEmail PHP library.

1.0.12(1mo ago)02881MITPHPPHP ^8.2|^8.3|^8.4|^8.5CI passing

Since Mar 13Pushed 1mo agoCompare

[ Source](https://github.com/apsonex/letmesendemail-php)[ Packagist](https://packagist.org/packages/letmesendemail/letmesendemail-php)[ Docs](https://letmesend.email/)[ RSS](/packages/letmesendemail-letmesendemail-php/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (10)Dependencies (12)Versions (11)Used By (1)

LetMeSend.Email PHP SDK
=======================

[](#letmesendemail-php-sdk)

[![Tests](https://camo.githubusercontent.com/b48db36f1940cdc1d9030401d30b3924e6c70119ae802b485f7c7dd12747729f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6170736f6e65782f6c65746d6573656e64656d61696c2d7068702f746573742d7068702e796d6c3f6c6162656c3d7465737473267374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d303030303030)](https://github.com/apsonex/letmesendemail-php/actions/workflows/test-php.yml)[![Packagist Downloads](https://camo.githubusercontent.com/1e1fe10d99d028da7da295663f4685b939fa34883d769d36cda90bedf4e381e1/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6c65746d6573656e64656d61696c2f6c65746d6573656e64656d61696c2d7068703f7374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d303030303030)](https://packagist.org/packages/letmesendemail/letmesendemail-php)[![Packagist Version](https://camo.githubusercontent.com/fc30643fa2dd467ce8ccbec8f25010104dbac1a2a14f9818408d86cca474a311/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6c65746d6573656e64656d61696c2f6c65746d6573656e64656d61696c2d7068703f7374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d303030303030)](https://packagist.org/packages/letmesendemail/letmesendemail-php)[![License](https://camo.githubusercontent.com/6b580c3efc321850e4405dbb88bb54fafb133c7a7740d9f3bd4d4f56bfd34785/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6170736f6e65782f6c65746d6573656e64656d61696c2d7068703f636f6c6f723d396366267374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d303030303030)](https://github.com/apsonex/letmesendemail-php/blob/master/LICENSE)

Emails
------

[](#emails)

API to interact with emails

### List Emails

[](#list-emails)

List emails. List will return `\LetMeSendEmail\ValueObject\RestResponses\Email\ListResponse` instance. For pagination, don't use before and after together. Either use `before` or `after` at a time.

```
$client->email()->list(
	perPage: 20,
	// after: '',
	// before: '',
);
```

### Send Email

[](#send-email)

Send Email.

Attachment can be added in two ways. Either attach via `path` or inline base64 encoded file content. specify the type property to be either 'path' or 'content'

Email size can not exceed more that 40MB. For safety margin, keep size less then 38MB. Response will be `\LetMeSendEmail\ValueObject\RestResponses\Domain\StoreResponse`

```
$client->email()->send(
	from: 'John Doe ',
	to: 'Jane Doe ',
	replyTo: 'sara@example.com',
	cc: ['max@example.com'],
	bcc: ['eleven@example.com'],
	subject: 'Subject',
	html: 'Message',
	text: 'Message',
	attachments: [
		[
			'type' => 'path',
			'filename' => 'image.png',
			'mimeType' => 'image/png',
			'contentId' => '',
			'path' => 'https://file-source-url.com',
		],
		[
			'type' => 'content',
			'filename' => 'image.png',
			'mimeType' => 'image/png',
			'contentId' => '',
			'content' => '',
		],
	],
);
```

### Show Email

[](#show-email)

Retrieve email by id. `\LetMeSendEmail\ValueObject\RestResponses\Email\GetResponse` instance will be returned

```
$client->email()->get(
	id: '',
);
```

### Verify Email

[](#verify-email)

Check if email is valid. `\LetMeSendEmail\ValueObject\RestResponses\Email\VerifyResponse` instance will be returned

```
$client->email()->verify([
	'email' => 'john@example.com'
])->valid(); // bool
```

Domains
-------

[](#domains)

API to interact with domains

### List domains

[](#list-domains)

List domains. List will return `\LetMeSendEmail\ValueObject\RestResponses\Domain\ListResponse` instance. For pagination, don't use before and after together. Either use `before` or `after` at a time.

```
$client->domain()->list(
	perPage: 20,
	// before: '',
	// after: '',
);
```

### Retrieve domain

[](#retrieve-domain)

Retrieve domain by `ID` or `domain name`. `\LetMeSendEmail\ValueObject\RestResponses\Domain\GetResponse` instance will be returned

```
$client->email()->get(
	id: ' or ',
);
```

### Verify Domain

[](#verify-domain)

Check if domain is valid. `\LetMeSendEmail\ValueObject\RestResponses\Domain\VerifyResponse` instance will be returned If response is 200, we will simply mark domain verified. In case, domain doesn't exist or un-verified, it will throw not found status code This is useful, when you want to check users' domain status

```
$client->domain()->verify([
	'domain' => 'example.com'
])->verified(); // bool
```

Contacts
--------

[](#contacts)

API to interact with contacts

### List Contacts

[](#list-contacts)

List contacts. It will return `\LetMeSendEmail\ValueObject\RestResponses\Contact\ListResponse` instance. For pagination, don't use before and after together. Either use `before` or `after` at a time.

```
$client->contact()->list(
	perPage: 20,
	// before: '',
	// after: '',
)->ok();
```

### Create Contact

[](#create-contact)

Create new contact.

Response will be `\LetMeSendEmail\ValueObject\RestResponses\Contact\StoreResponse`

```
$client->contact()->create(
	email: 'john@example.com',
	first_name: 'John',
	last_name: 'Doe',
	phone: +11231231234,
	categories: [''],
	tags: [''],
)->ok();
```

### Show Contact

[](#show-contact)

Retrieve single contact by id. `\LetMeSendEmail\ValueObject\RestResponses\Contact\GetResponse` instance will be returned

```
$client->contact()->get(
	id: '',
)->ok();
```

### Update Contact

[](#update-contact)

Update given contact. `\LetMeSendEmail\ValueObject\RestResponses\Contact\UpdateResponse` instance will be returned

```
$client->contact()->update(
id: '',
payload: [
		'email' => 'john@example.com'
	]
)->updated(); // bool
```

### Delete Contact

[](#delete-contact)

Remove given contact. `\LetMeSendEmail\ValueObject\RestResponses\Contact\DeleteResponse` instance will be returned

```
$client->contact()->remove(
id: '',
)->deleted(); // bool
```

Contact Categories
------------------

[](#contact-categories)

API to interact with contact categories

### List Contact Categories

[](#list-contact-categories)

List contact categories. It will return `\LetMeSendEmail\ValueObject\RestResponses\ContactCategory\ListResponse` instance. For pagination, don't use before and after together. Either use `before` or `after` at a time.

```
$client->contactCategory()->list(
	perPage: 20,
	// before: '',
	// after: '',
)->ok();
```

### Create Contact Category

[](#create-contact-category)

Create new contact category. It will create new category, if `slug` with same name already exists, it will update the given category

Response will be `\LetMeSendEmail\ValueObject\RestResponses\ContactCategory\StoreResponse`

```
$client->contactCategory()->create(
	name: 'Category Name',
)->ok();
```

### Show Contact Category

[](#show-contact-category)

Retrieve single contact category by id. `\LetMeSendEmail\ValueObject\RestResponses\ContactCategory\GetResponse` instance will be returned

```
$client->contactCategory()->get(
	id: '',
)->ok();
```

### Update Contact Category

[](#update-contact-category)

Update given contact category. `\LetMeSendEmail\ValueObject\RestResponses\ContactCategory\UpdateResponse` instance will be returned

```
$client->contactCategory()->update(
id: '',
payload: [
		'name' => 'New Name',
		'slug' => 'new-name',
	]
)->updated(); // bool
```

### Delete Contact Category

[](#delete-contact-category)

Remove given contact category. `\LetMeSendEmail\ValueObject\RestResponses\ContactCategory\DeleteResponse` instance will be returned

```
$client->contactCategory()->remove(
id: '',
)->deleted(); // bool
```

Contact Tags
------------

[](#contact-tags)

API to interact with contact tags

### List Contact Tags

[](#list-contact-tags)

List contact tags. It will return `\LetMeSendEmail\ValueObject\RestResponses\ContactTag\ListResponse` instance. For pagination, don't use before and after together. Either use `before` or `after` at a time.

```
$client->contactTag()->list(
	perPage: 20,
	// before: '',
	// after: '',
)->ok();
```

### Create Contact Tag

[](#create-contact-tag)

Create new contact tag. It will create new tag, if `slug` with same name already exists, it will update the given tag

Response will be `\LetMeSendEmail\ValueObject\RestResponses\ContactTag\StoreResponse`

```
$client->contactTag()->create(
	name: 'Tag Name',
)->ok();
```

### Show Contact Tag

[](#show-contact-tag)

Retrieve single contact tag by id. `\LetMeSendEmail\ValueObject\RestResponses\ContactTag\GetResponse` instance will be returned

```
$client->contactTag()->get(
	id: '',
)->ok();
```

### Update Contact Tag

[](#update-contact-tag)

Update given contact tag. `\LetMeSendEmail\ValueObject\RestResponses\ContactTag\UpdateResponse` instance will be returned

```
$client->contactTag()->update(
id: '',
payload: [
		'name' => 'New Name',
		'slug' => 'new-name',
	]
)->updated(); // bool
```

### Delete Contact Tag

[](#delete-contact-tag)

Remove given contact tag. `\LetMeSendEmail\ValueObject\RestResponses\ContactTag\DeleteResponse` instance will be returned

```
$client->contactTag()->remove(
id: '',
)->deleted(); // bool
```

Webhook
-------

[](#webhook)

API to interact with webhook

### Verify Incoming Webhook

[](#verify-incoming-webhook)

You can verify incoming webhook from `letmesend.email`Use the `\LetMeSendEmail\Support\WebhookSignature::verify(...)` to execute verification

```
WebhookSignature::verify(
	payload: '{...}', // payload string (its the body of the request)
	headers: [...], // request headers array
	secret: '', // webhook signing secret
	tolerance: 300, // webhook tolerance
); // bool
```

###  Health Score

46

—

FairBetter than 92% of packages

Maintenance89

Actively maintained with recent releases

Popularity16

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

Every ~5 days

Recently: every ~11 days

Total

10

Last Release

55d ago

PHP version history (3 changes)1.0.3PHP ^8.2

1.0.8PHP ^8.1

1.0.11PHP ^8.2|^8.3|^8.4|^8.5

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/73299554?v=4)[Apsonex Inc.](/maintainers/apsonex)[@apsonex](https://github.com/apsonex)

---

Top Contributors

[![gurindersingh](https://avatars.githubusercontent.com/u/6223752?v=4)](https://github.com/gurindersingh "gurindersingh (35 commits)")

---

Tags

phpapiclientsdkLetMeSendEmail

###  Code Quality

TestsPest

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/letmesendemail-letmesendemail-php/health.svg)

```
[![Health](https://phpackages.com/badges/letmesendemail-letmesendemail-php/health.svg)](https://phpackages.com/packages/letmesendemail-letmesendemail-php)
```

###  Alternatives

[openai-php/laravel

OpenAI PHP for Laravel is a supercharged PHP API client that allows you to interact with the Open AI API

3.7k8.8M83](/packages/openai-php-laravel)[resend/resend-laravel

Resend for Laravel

1212.2M8](/packages/resend-resend-laravel)[kunalvarma05/dropbox-php-sdk

Dropbox PHP API V2 SDK (Unofficial)

3623.1M18](/packages/kunalvarma05-dropbox-php-sdk)[resend/resend-php

Resend PHP library.

596.2M35](/packages/resend-resend-php)[mozex/anthropic-php

PHP client for the Anthropic API: messages, streaming, tool use, thinking, web search, code execution, batches, and more.

47480.9k16](/packages/mozex-anthropic-php)[gemini-api-php/laravel

Gemini API client for Laravel

8916.9k](/packages/gemini-api-php-laravel)

PHPackages © 2026

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