Coder Social home page Coder Social logo

micc83 / mailamie Goto Github PK

View Code? Open in Web Editor NEW
77.0 1.0 0.0 1.53 MB

๐ŸŒˆ Mailamie is a simple SMTP catch all server for testing written in PHP.

License: MIT License

PHP 82.58% CSS 2.07% JavaScript 0.65% Vue 14.70%
smtp-server testing php

mailamie's Introduction

SWUbanner

Mailamie

Catch All SMTP Server for testing

Tests PHP CS Fixer PHPStan codecov

Index

Why

Sometime you just need a simple tool to verify that some legacy project, without tests in place or with some very complex environment, sends the right emails to the right people. Surely there're many valid tools out there for the job but as it's not something happening every day it's pretty cumbersome having to install these tools.

Mailamie is a side project I've put up in my summer vacations for playing with async PHP. Using it is as simple as setting a few parameters on your project:

# Ex. Laravel .env file
MAIL_MAILER=smtp
MAIL_HOST=127.0.0.1
MAIL_PORT=8025
MAIL_ENCRYPTION=null

and running it with the command:

$ mailamie

How

Mailamie is a pretty simple Catch All SMTP Server for local testing completely written in PHP and based on the great work made by the folks at ReactPhp.

It's in no way a replacement for more complete tools such as Mailhog as it doesn't actually check SMTP implementantion details, instead it only cares about getting emails headers and body for high level delivery testing.

DO NOT USE IN PRODUCTION. Mailamie starts three different servers (SMTP on port 8025, HTTP on port 8080, WebSocket on port 1338). No steps have been taken to secure any of the three. Also, external access to those ports should be blocked.

Mailamie can be used directly from the CLI:

or, for better UX, in the browser:

Install

Mailamie requires PHP ^7.4. To install it globally on your system run the following command to install:

composer global require micc83/mailamie

Usage

Run the following command to get help:

mailamie --help

The output will be:

Description:
  Mailamie is catch all SMTP server for testing.

Usage:
  mailamie [options]
  mailamie --host=127.0.0.1 --port=25    Ex. SMTP Host definition

Options:
  -H, --host=HOST       Set the host on which to listen for calls
  -p, --port=PORT       Set the port on which to listen for SMTP calls
  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Help:
  You can define custom configuration from the file ~/.mailamie.config.php,
  check the project readme file at https://github.com/micc83/mailamie
  for all the available settings.

Settings

You can define default settings in ~/.mailamie.config.php, in order to do so run:

$ touch ~/.mailamie.config.php && vim ~/.mailamie.config.php

This files returns a PHP array with the following available settings.

<?php

return [
    'smtp' => [
        'host' => '127.0.0.1',
        'port' => '8025'
    ],

    'http' => [
        'host' => '127.0.0.1',
        'port' => '8080'
    ],

    'websocket' => [
        'host' => '127.0.0.1',
        'port' => '1338'
    ],
];

You'd better define only the needed ones, in case something should change after upgrades.

mailamie's People

Contributors

dependabot[bot] avatar micc83 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

mailamie's Issues

Allow emails forwarding

A nice feature would be to allow to forward singular email from the web ui or setting a --forwardto [email protected] option to the CLI that would forward all the emails to the given address.

In order to do so we can leverage PHP mail or allow to set SMTP settings in the config file (I wouldn't add CLI options for that as it would be cumbersome).

Any thought on this issue would be appreciated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.