PHPackages                             joseimagina/mailrelay-client - 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. joseimagina/mailrelay-client

ActiveLibrary

joseimagina/mailrelay-client
============================

Client Laravel de la API Rest de MailRelay

03PHP

Since Jul 27Pushed 3y agoCompare

[ Source](https://github.com/joseimagina/mailrelay-client)[ Packagist](https://packagist.org/packages/joseimagina/mailrelay-client)[ RSS](/packages/joseimagina-mailrelay-client/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Mailrelay Laravel Client
========================

[](#mailrelay-laravel-client)

Cliente Laravel de la API Rest de MailRelay.

*Credits*: Ajuntament de Tarragona.

> Check the MailRelay API docs here:

- [Instalación](#instalaci%C3%B3n)
- [Configuración](#configuraci%C3%B3n)
- [Uso](#uso)
    - [Funciones](#funciones)
        - [Senders (Remitentes)](#senders-remitentes)
            - [getSenders($page=null, $per\_page=null)](#getsenderspagenull-per_pagenull)
            - [getSender($id)](#getsenderid)
            - [getDefaultSender()](#getdefaultsender)
            - [createSender($name, $email)](#createsendername-email)
        - [Custom Fields](#custom-fields)
            - [getCustomFields($page=null, $per\_page=null)](#getcustomfieldspagenull-per_pagenull)
            - [getCustomField($id)](#getcustomfieldid)
            - [createCustomField($name, $label, $type="text", $required=false, $default\_value="", $options=\[\])](#createcustomfieldname-label-typetext-requiredfalse-default_value-options)
        - [Groups](#groups)
            - [getGroups($page=null, $per\_page=null)](#getgroupspagenull-per_pagenull)
            - [getGroup($id)](#getgroupid)
            - [createGroup($name, $description=null)](#creategroupname-descriptionnull)
        - [Campaigns (Boletines)](#campaigns-boletines)
            - [getCampaigns($page=null, $per\_page=null)](#getcampaignspagenull-per_pagenull)
            - [getCampaign($id)](#getcampaignid)
            - [createCampaign($subject, $body, $sender\_id, $group\_ids=\[\], $target="groups", $attributes=\[\])](#createcampaignsubject-body-sender_id-group_ids-targetgroups-attributes)
        - [Sent Campaigns (Informes de envio de Boletines)](#sent-campaigns-informes-de-envio-de-boletines)
            - [getSentCampaigns($page=null, $per\_page=null)](#getsentcampaignspagenull-per_pagenull)
            - [getSentCampaign($id)](#getsentcampaignid)
        - [Campaign Folders](#campaign-folders)
            - [getCampaignFolders($page=null, $per\_page=null)](#getcampaignfolderspagenull-per_pagenull)
            - [getCampaignFolder($id)](#getcampaignfolderid)
            - [createCampaignFolder($name)](#createcampaignfoldername)
        - [Imports](#imports)
            - [getImports($page=null, $per\_page=null)](#getimportspagenull-per_pagenull)
            - [getImport($id)](#getimportid)
            - [createImport($filename, $subscribers, $group\_ids=\[\], $callback=null, $ignore=true)](#createimportfilename-subscribers-group_ids-callbacknull-ignoretrue)
        - [Media Files](#media-files)
            - [getMediaFiles($page=null, $per\_page=null)](#getmediafilespagenull-per_pagenull)
            - [getMediaFile($id){](#getmediafileid)
            - [createMediaFile($filename, $content, $media\_folder\_id=false)](#createmediafilefilename-content-media_folder_idfalse)
            - [uploadMediaFile($filename, $uploaded\_file, $media\_folder\_id=0)](#uploadmediafilefilename-uploaded_file-media_folder_id0)
        - [Media Folders](#media-folders)
            - [getMediaFolders(){](#getmediafolders)
            - [getMediaFolder($id){](#getmediafolderid)
            - [createMediaFolder($name){](#createmediafoldername)
    - [Clases](#clases)
        - [Clase RestModel](#clase-restmodel)
            - [delete()](#delete)
            - [update($attributes=\[\])](#updateattributes)
        - [Clase CustomField](#clase-customfield)
        - [Clase Sender](#clase-sender)
            - [sendConfirmationMail()](#sendconfirmationmail)
        - [Clase Group](#clase-group)
        - [Clase Campaign](#clase-campaign)
            - [send()](#send)
        - [Clase SentCampaign](#clase-sentcampaign)
            - [clicks()](#clicks)
            - [impressions()](#impressions)
            - [sent\_emails()](#sent_emails)
            - [unsubscribe\_events()](#unsubscribe_events)
        - [Clase CampaignFolder](#clase-campaignfolder)
        - [Clase Import](#clase-import)
            - [data()](#data)
            - [cancel()](#cancel)
        - [Clase MediaFile](#clase-mediafile)
        - [Clase MediaFolder](#clase-mediafolder)

Instalación
-----------

[](#instalación)

```
composer require ajtarragona/mailrelay-client
```

Configuración
-------------

[](#configuración)

Puedes configurar el paquete a través del archivo `.env` de tu aplicación Laravel, a través de las siguientes variables de entorno:

```
MAILRELAY_API_URL
MAILRELAY_API_KEY
MAILRELAY_DEBUG
```

Alternativamente, puedes publicar en archivo de configuración a través del comando:

```
php artisan vendor:publish --tag=ajtarragona-mailrelay-config
```

Esto creará el archivo `mailrelay.php` en la carpeta `config` de tu aplicación Laravel.

Uso
---

[](#uso)

Puedes usar el servicio de tres maneras diferentes:

**A través de una `Facade`:**

```
use MailRelay;
...
public  function  test(){
    $remitents=MailRelay::getSenders();
    ...
}
```

> *Nota*: Para Laravel &lt; 5.6, es necesario registrar el alias de la `Facade` en el archivo `config/app.php` de tu aplicación Laravel

```
'aliases'  =>  [
   ...
   'MailRelay'  =>  Ajtarragona\MailRelay\Facades\MailRelay::class
]
```

**Vía Inyección de dependencias:**

En tus controladores, helpers, modelo...

```
use Ajtarragona\MailRelay\MailRelayService;
...

public  function  test(MailRelayService  $mailrelay){
    $remitents=$mailrelay->getSenders();
    ...
}
```

**Vía función `helper`:**

```
...
public  function  test(){
    $remitents=mailrelay()->getSenders();
    ...
}
```

---

### Funciones

[](#funciones)

#### Senders (Remitentes)

[](#senders-remitentes)

Un remitente es un objeto de la clase [Sender](#clase-sender)

##### getSenders($page=null, $per\_page=null)

[](#getsenderspagenull-per_pagenull)

Retorna todos los remitentes.

- `$page`: numero de pàgina (opcional)
- `$per_page`: registres per pàgina (opcional)

##### getSender($id)

[](#getsenderid)

Retorna un remitente

##### getDefaultSender()

[](#getdefaultsender)

Retorna el remitente por defecto

##### createSender($name, $email)

[](#createsendername-email)

Añade un remitente

- `$name`: nombre del remitente
- `$email`: email del remitente

#### Custom Fields

[](#custom-fields)

Un custom field es un objeto de la clase [CustomField](#clase-customfield)

##### getCustomFields($page=null, $per\_page=null)

[](#getcustomfieldspagenull-per_pagenull)

Retorna todos los custom\_fields de Mailrelay.

##### getCustomField($id)

[](#getcustomfieldid)

Retorna un custom\_fields

##### createCustomField($name, $label, $type="text", $required=false, $default\_value="", $options=\[\])

[](#createcustomfieldname-label-typetext-requiredfalse-default_value-options)

Añade un custom field a mailrelay.

- `$name`: nombre corto interno
- `$label`: nombre visible
- `$type` : Tipo de campo. Soportados: text, textarea, number, select, select\_multiple, checkbox, radio\_buttons, date. (opcional, por defecto `text`)
- `$required`: Indica si será obligatorio (opcional, por defecto `false`)
- `$default_value`: Valor por defecto (opcional)

En caso de ser select, select\_multiple, checkbox o radio\_buttons:

- `$options` es un array con los nombres de las opciones

#### Groups

[](#groups)

Un grupo es un objeto de la clase [Group](#clase-group)

##### getGroups($page=null, $per\_page=null)

[](#getgroupspagenull-per_pagenull)

Retorna todos los grupos.

##### getGroup($id)

[](#getgroupid)

Retorna un grupo

##### createGroup($name, $description=null)

[](#creategroupname-descriptionnull)

Añade un grupo

#### Campaigns (Boletines)

[](#campaigns-boletines)

Un boletín es un objeto de la clase [Campaign](#clase-campaign)

##### getCampaigns($page=null, $per\_page=null)

[](#getcampaignspagenull-per_pagenull)

Retorna todos los boletines.

##### getCampaign($id)

[](#getcampaignid)

Retorna un boletin

##### createCampaign($subject, $body, $sender\_id, $group\_ids=\[\], $target="groups", $attributes=\[\])

[](#createcampaignsubject-body-sender_id-group_ids-targetgroups-attributes)

Añade un boletin

- `$subject` Asunto
- `$body` Cuerpo del boletín
- `$sender_id`Id del remitente
- `$group_ids`Array de Ids de grupo (opcional)
- `$target` Indica si serà un boletín de grupos (`groups`) o de segmento (`segment`)
- `$attributes` Array con otros atributos opcionales que pasaremos a la API MailRelay.

#### Sent Campaigns (Informes de envio de Boletines)

[](#sent-campaigns-informes-de-envio-de-boletines)

Un informe de envio de boletín es un objeto de la clase [SentCampaign](#clase-sentcampaign)

##### getSentCampaigns($page=null, $per\_page=null)

[](#getsentcampaignspagenull-per_pagenull)

Retorna todos los informes de envio de boletín.

##### getSentCampaign($id)

[](#getsentcampaignid)

Retorna un informe de envio de boletín

#### Campaign Folders

[](#campaign-folders)

Una carpeta es un objeto de la clase [CampaignFolder](#clase-campaignfolder)

##### getCampaignFolders($page=null, $per\_page=null)

[](#getcampaignfolderspagenull-per_pagenull)

Retorna todas las carpetas de boletín.

##### getCampaignFolder($id)

[](#getcampaignfolderid)

Retorna una carpeta de boletín

##### createCampaignFolder($name)

[](#createcampaignfoldername)

Añade una carpeta de boletín

- `$name` Nombre de la carpeta

#### Imports

[](#imports)

Una importacion es un objeto de la clase [Import](#clase-import)

##### getImports($page=null, $per\_page=null)

[](#getimportspagenull-per_pagenull)

Retorna todas las importaciones.

##### getImport($id)

[](#getimportid)

Retorna una importacion

##### createImport($filename, $subscribers, $group\_ids=\[\], $callback=null, $ignore=true)

[](#createimportfilename-subscribers-group_ids-callbacknull-ignoretrue)

Añade una importacion

- `$filename` name of the file created in MailRelay
- `$subscribers` must be an array of subscribers. Each row must have the same key=&gt;value fields. Custom fields key shold be: `custom_field_ID`
- `$group_ids` array of group IDs the users will be subscribed to
- `$callback` url
- `$ignore` by default existing users will be ignored

```
MailRelay::createImport("prueba api",[
  [
    "name"=>"juan",
    "email"=>"juan2@txomin.com",
    "custom_field_17"=>"a"
  ],
  [
    "name"=>"Luis d'Àvila",
    "email"=>"luis2@txomin.com",
    "custom_field_17"=>"bb"
  ]
],[13]);
```

#### Media Files

[](#media-files)

Un media file es un objeto de la clase [MediaFile](#clase-mediafile)

##### getMediaFiles($page=null, $per\_page=null)

[](#getmediafilespagenull-per_pagenull)

Retorna todas las imagenes

##### getMediaFile($id){

[](#getmediafileid)

Retorna una imagen

##### createMediaFile($filename, $content, $media\_folder\_id=false)

[](#createmediafilefilename-content-media_folder_idfalse)

Añade una imagen

- `$filename` Nombre de la imagen
- `$content` Contenido biario de la imagen (no base64)

##### uploadMediaFile($filename, $uploaded\_file, $media\_folder\_id=0)

[](#uploadmediafilefilename-uploaded_file-media_folder_id0)

Añade una imagen a partir de un upload

#### Media Folders

[](#media-folders)

Un media folder es un objeto de la clase [MediaFolder](#clase-mediafolder)

##### getMediaFolders(){

[](#getmediafolders)

Retorna las carpetas de media

##### getMediaFolder($id){

[](#getmediafolderid)

Retorna una carpeta de media

##### createMediaFolder($name){

[](#createmediafoldername)

Añade una carpeta de media.

Si ya existe con el mismo nombre, la devuelve

---

### Clases

[](#clases)

#### Clase RestModel

[](#clase-restmodel)

Los objetos que devuelve la API se devuelven como instancias de la clase `RestModel`. Sobre estos objetos podemos invocar los siguientes métodos:

##### delete()

[](#delete)

Eliminará el objeto de MailRelay

```
$sender=MailRelay::getSender(2);
$sender->delete();
```

##### update($attributes=\[\])

[](#updateattributes)

Modificará los atributos pasados

```
$sender=MailRelay::getSender(2);
$sender->update([
    "name"=>"Nuevo nombre"
]);
```

#### Clase CustomField

[](#clase-customfield)

Hereda de la clase [RestModel](#clase-restmodel)

#### Clase Sender

[](#clase-sender)

Hereda de la clase [RestModel](#clase-restmodel)

Métodos:

##### sendConfirmationMail()

[](#sendconfirmationmail)

Envía el mail de confirmación al remitente

```
$sender=MailRelay::getSender(2);
$sender->sendConfirmationMail();
```

#### Clase Group

[](#clase-group)

Hereda de la clase [RestModel](#clase-restmodel)

#### Clase Campaign

[](#clase-campaign)

Hereda de la clase [RestModel](#clase-restmodel)

Métodos:

##### send()

[](#send)

Envía el boletín. Retorna el informe de envio (un objeto [SentCampaign](#clase-sentcampaign))

```
$boletin=MailRelay::getCampaign(5);
$informe=$boletin->send();
```

#### Clase SentCampaign

[](#clase-sentcampaign)

Hereda de la clase [RestModel](#clase-restmodel)

Métodos:

##### clicks()

[](#clicks)

Retona els clicks

##### impressions()

[](#impressions)

Retona les impressions

##### sent\_emails()

[](#sent_emails)

Retona els emails enviats

##### unsubscribe\_events()

[](#unsubscribe_events)

Retona les desubscripcions

#### Clase CampaignFolder

[](#clase-campaignfolder)

Hereda de la clase [RestModel](#clase-restmodel)

#### Clase Import

[](#clase-import)

Hereda de la clase [RestModel](#clase-restmodel)

Métodos:

##### data()

[](#data)

Devuelve los datos de la importación

##### cancel()

[](#cancel)

Cancela una importación si está en curso

#### Clase MediaFile

[](#clase-mediafile)

Hereda de la clase [RestModel](#clase-restmodel)

#### Clase MediaFolder

[](#clase-mediafolder)

Hereda de la clase [RestModel](#clase-restmodel)

###  Health Score

15

—

LowBetter than 3% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity25

Early-stage or recently created project

 Bus Factor1

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

### Community

Maintainers

![](https://www.gravatar.com/avatar/708e6f8f879583b77123425e630392b89af36e099b186c50260dccb21259c6e2?d=identicon)[joseimagina](/maintainers/joseimagina)

---

Top Contributors

[![ajtarragona](https://avatars.githubusercontent.com/u/45968689?v=4)](https://github.com/ajtarragona "ajtarragona (21 commits)")[![jaespinosabcg](https://avatars.githubusercontent.com/u/108512462?v=4)](https://github.com/jaespinosabcg "jaespinosabcg (4 commits)")

### Embed Badge

![Health badge](/badges/joseimagina-mailrelay-client/health.svg)

```
[![Health](https://phpackages.com/badges/joseimagina-mailrelay-client/health.svg)](https://phpackages.com/packages/joseimagina-mailrelay-client)
```

PHPackages © 2026

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