exonos/mailapi

Transactional email as a microservice for Laravel

v1.0.0 2024-06-03 05:27 UTC

This package is auto-updated.

Last update: 2024-11-03 04:55:25 UTC


README

MailAPI

Meet MailAPI

MailAPI is a Laravel package that provides an API for email sending as a microservice, designed to efficiently handle multiple email clients without the need to repeat configurations. This tool allows businesses to centrally and seamlessly manage their transactional emails, offering a robust and scalable solution for customer communication.

Key Features:

  • Email Sending Microservice: MailAPI is conceived as a microservice, enabling easy integration with various applications and services, optimizing email management from a single platform.

  • Centralized Configuration: Eliminates configuration redundancy by centralizing all email sending settings in one place. This simplifies administration and reduces configuration errors.

  • Queues and Jobs: Implements queues and jobs for email sending, ensuring efficient delivery of messages and optimally handling large volumes of emails.

  • Logging and Monitoring: Includes features for logging and monitoring sent emails, allowing businesses to track the status and history of emails, as well as manage errors and exceptions.

Project setup

Install all dependencies

composer require exonos\mailapi

Run all migrations

php artisan migrate

To send a mail, create a client, this generates a secret that is used in the API.

php artisan mail:client

Send a POST request to http://{your local address}/api/v1/email with the payload

{
    "from": "father doe",
    "to": [
        {
            "email": "john@doe.com",
            "name": "John doe"
        }
    ],
    "subject": "Hi from {$company}",
    "text": "test",
    "html": "<h1>{$company} is saying hi</h1><p>testing html with {$company}</p>",
    "variables": [
        {
            "email": "john@doe.com",
            "substitutions": [
                {
                    "var": "company",
                    "value": "MailAPI"
                }
            ]
        }
    ],
    "attachments" : [
       {
          "filename" : "test.jpg",
          "content" : "base 64 file content"
       }
    ]
}

With Headers

secret: {generated secret}
Accept: application/json

Note

  • attachments is optional
  • You can either send a text or a html not both
  • The package will take the default credentials of the Laravel application defined in the .env, make sure to configure your connection correctly.
  • if you add a variable kindly provide it's substitution, if this is not done nothing will be substituted and ignored from recipients.

Security Vulnerabilities

If you discover a security vulnerability in MailAPI, please help us maintain the security of this project by responsibly disclosing it to us. To report a security vulnerability, please send an email to hh.abdiel@gmail.com. We'll address the issue as promptly as possible.

Credits

Support My Work

If you find MailAPI helpful and would like to support my work, you can buy me a coffee. Your support will help keep this project alive and thriving. It's a small token of appreciation that goes a long way.

Buy me a coffee

License

The MIT License (MIT). Please see License File for more information.


Made with ❤️ from Mexico