This is my effort to create a simple, yet configurable tool for testing email.
Tools used:
Goals are to make it work using:
Also: Why ANOTHER FakeSMTP library?
There are all kinds of paid "fake SMTP" versions that work really well, but it's hard to find a free version that works really well. I thought: MAYBE there is a way to create a PHP version that works like a paid version, but is free and solely PHP based.
It doesnt have to be a full-blown SMTP implementation, but it should be able to receive emails sent by an "unsecure" port.
So basically it only needs to support "unsecure" sending of emails. It doesn't necessarily have to support STARTTLS or other "secure" transmission: It doesn't send anything, it only receives.
I probably can't do this entirely on my own. My knowledge of SMTP is only basic. Everything else regarding PHP I can do.
Also, creating a runner in PHP may be a challenge. Also to kill an instance.
I like Laravel. Though there is a lot of overhead, it just provides a lot of functionality through its basic installation. And there are too many tools all created (ready) for Laravel. So yes, Laravel.
A runner instance is started and should keep running until it is stopped. If it has crashed, it should be restarted.
So there should be some kind of monitoring that checks if it is still alive.
You should also be able to start and stop the runner manually.
All emails should be stored in a database (SQLite or MySQL). This should be configurable so one can apply ones needs and wishes.
Probably an .env
setting like FAKE_SMTP_STORAGE=[database|file]
and other necessary
configuration items.
If the user pick database
a form of database, it should pick up the DB_*
. Fields in the
database should be chosen in a way that it contains all valuable information. E.g. storing
an IP should not considered very useful, though possible.
If the user picks file
the folder it defaults to should be [project]/storage/data/mails
. It
also should create a mapping, database-like file so you don't have to parse all the email files.
Preferable this is a 1/3-2/3 grid/detail page. The email content, however, should probably be opened in an IFRAME to prevent the content messing up the view you are viewing.
The email overview should be presented through a designated 'grid' area (see PowerGrid).
A designated 'read' area should show all the information regarding the email. This should preferably be a self-updating page through Livewire: Click fires event, event updates page. In Livewire this behaviour should be .