PHPackages                             apsonex/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. apsonex/letmesendemail-php

ActiveLibrary[API Development](/categories/api)

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

LetMeSendEmail PHP library.

1.0.1(5mo ago)00MITPHPPHP ^8.1.0CI passing

Since Jan 6Pushed 2mo agoCompare

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

READMEChangelog (10)Dependencies (8)Versions (3)Used By (0)

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)

User following 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->emails()->list(
	perPage: 20,
	// before: '',
	// after: '',
);
```

### 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->emails()->send(
	type: 'broadcast', // broadcast or transactional and is optional
	event_name: 'user.created', // optional
	from: 'John Doe ',
	to: ['Jane Doe '],
	reply_to: ['sara@example.com'],
	cc: ['max@example.com'], // optional
	bcc: ['eleven@example.com'], // optional
	subject: 'Subject', // optional
	html: 'Message', // do not use with template_id
	text: 'Message', // do not use with template_id
	headers: ['X-Custom-Header' => 'Header Value'], // optional
	template_id: '', // optional
	template_variables: [
		 [ 'key' => 'USER_FIRST_NAME', 'type' => 'string', 'value' => 'John' ],
		 [ 'key' => 'USER_LAST_NAME', 'type' => 'string', 'value' => 'Doe' ]
	], // optional and required if template_id is set
	attachments: [
		[
			'name' => 'image.png',
			'content_id' => '', // @
			'path' => 'https://file-source-url.com', // do not use with attachment content
			'content_disposition' => 'attachment', // inline or attachment
		],
		[
			'name' => 'image.png',
			'content_id' => '', // @
			'content' => '', // do not use with attachment path
			'content_disposition' => 'attachment', // inline or attachment
		],
	], // optional
);
```

### Show Email

[](#show-email)

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

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

### Verify Email

[](#verify-email)

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

```
$client->emails()->verify(email: 'john@example.com')->valid(); // bool
```

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

[](#contact-categories)

User following api to interact with contact categories

### List Email Topics

[](#list-email-topics)

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

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

### Create Email Topic

[](#create-email-topic)

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

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

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

### Show Email Topic

[](#show-email-topic)

Retrieve single email topic by id. `\LetMeSendEmail\ValueObject\RestResponses\EmailTopic\GetResponse` instance will be returned

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

### Update Email Topic

[](#update-email-topic)

Update given email topic. `\LetMeSendEmail\ValueObject\RestResponses\EmailTopic\UpdateResponse` instance will be returned

```
$client->emailTopics()->update(
id: '',
payload: [
		'name' => 'Email Topic Name',
		'description' => 'Email topic description',
		'public' => true,
	]
)->updated(); // bool
```

### Delete Email Topic

[](#delete-email-topic)

Remove given email topic. `\LetMeSendEmail\ValueObject\RestResponses\EmailTopic\DeleteResponse` instance will be returned

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

Domains
-------

[](#domains)

User following 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->domains()->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->domains()->verify([
	'domain' => 'example.com'
])->verified(); // bool
```

Contacts
--------

[](#contacts)

User following 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->contacts()->list(
	perPage: 20,
	// before: '',
	// after: '',
)->ok();
```

### Create Contact

[](#create-contact)

Create new contact.

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

```
$client->contacts()->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->contacts()->get(
	id: '',
)->ok();
```

### Update Contact

[](#update-contact)

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

```
$client->contacts()->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->contacts()->remove(
id: '',
)->deleted(); // bool
```

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

[](#contact-categories-1)

User following 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->contactCategories()->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->contactCategories()->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->contactCategories()->get(
	id: '',
)->ok();
```

### Update Contact Category

[](#update-contact-category)

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

```
$client->contactCategories()->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->contactCategories()->remove(
id: '',
)->deleted(); // bool
```

Webhook
-------

[](#webhook)

User following 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: '123...abc', // webhook signing secret
	tolerance: 300, // webhook tolerance
); // bool
```

###  Health Score

34

—

LowBetter than 75% of packages

Maintenance79

Regular maintenance activity

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity45

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 ~0 days

Total

2

Last Release

179d ago

### 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/apsonex-letmesendemail-php/health.svg)

```
[![Health](https://phpackages.com/badges/apsonex-letmesendemail-php/health.svg)](https://phpackages.com/packages/apsonex-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.7k9.5M89](/packages/openai-php-laravel)[resend/resend-php

Resend PHP library.

617.2M43](/packages/resend-resend-php)[resend/resend-laravel

Resend for Laravel

1222.7M9](/packages/resend-resend-laravel)[kunalvarma05/dropbox-php-sdk

Dropbox PHP API V2 SDK (Unofficial)

3673.2M19](/packages/kunalvarma05-dropbox-php-sdk)[mozex/anthropic-laravel

Laravel integration for the Anthropic API: facade, config publishing, install command, testing fakes, messages, streaming, tool use, thinking, and batches.

74331.3k1](/packages/mozex-anthropic-laravel)[checkout/checkout-sdk-php

Checkout.com SDK for PHP

563.6M13](/packages/checkout-checkout-sdk-php)

PHPackages © 2026

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