Repository navigation
v2.1.0
What's Changed
Breaking Changes
- Removed
illuminate/collectionsdependency — all internal usage replaced with plain PHP array functions. If you relied on this as a transitive dependency, add it to your owncomposer.json. mail()now throwsRuntimeExceptionon failure — previously exit codes were silently discarded.EncryptionMode::MIMErenamed toEncryptionMode::SMIME— the CLI flag is--smime, not--mime. String'mime'is still accepted as an alias.symlink()default path fixed — now correctly resolves$HOMEviagetenv('HOME')instead of using an unexpandable literal string.
New Features
- Fluent Builder API — new
Emate::compose()static factory with chainable setters:Emate::compose() ->to('recipient@example.com') ->sender('sender@example.com') ->subject('Hello') ->body('Email body') ->markdown() ->encrypt() ->sign() ->sendNow() ->encryptionMode(EncryptionMode::SMIME) ->signature('Best regards') ->header('X-Priority', '1') ->mail();
- Signature support — set text or reference existing signature by UUID via
'signature'option or->signature()fluent setter. - Custom headers — add arbitrary email headers via
'headers'option or->header('Name', 'Value')fluent setter. markdownoption now accepts truthy strings — recognizestrue,'yes', and'true'(same asencrypt,sign,send_now).
Fixes
- S/MIME encryption mode — now generates correct
--smimeflag instead of invalid--mime. - Changelog workflow — added concurrency group and
git pull --rebaseto prevent failures from simultaneous release events.
Internal
- Simplified all command-building methods to return strings directly instead of keyed arrays.
- Replaced
Collection-based data flow witharray_map/implode/explode.
See UPGRADE.md for migration details.