oroinc/laminas-mail
oroinc/laminas-mail is a small bridge package for using Laminas Mail components within Oro applications. Provides the Laminas mail classes and configuration needed to send emails, manage transports, and integrate with Oro’s mailing features.
Pros:
laminas-mail, which is a mature, battle-tested library for email composition and transport. Laravel’s built-in Mail facade already uses swiftmailer under the hood, but this package could serve as a drop-in alternative for SMTP/MIME functionality, especially if migrating away from SwiftMailer or needing PHP 8.4 support.Sendmail, SMTP, File), allowing flexibility in deployment (e.g., local testing via File, production via SMTP).TransportInterface implementations).laminas-mail (abandoned post-2023), making it viable for long-term Laravel projects targeting newer PHP versions.Cons:
laminas-mail is deprecated in favor of alternatives like symfony/mailer. This fork’s long-term viability depends on community adoption or maintenance by the fork’s author.symfony/mailer, this package lacks native Laravel service provider or facade integrations, requiring manual setup.Mailer or Laravel’s built-in Mail facade may suffice with less boilerplate.Laravel Ecosystem Fit:
swiftmailer in Laravel’s Mail facade by configuring a custom Transport in config/mail.php (see Laravel’s transport documentation).Mailable classes for templating (e.g., Blade, Markdown) since it handles MIME composition.// config/mail.php
'transport' => [
'smtp' => [
'transport' => 'laminas',
'config' => [
'host' => env('MAIL_HOST'),
'port' => env('MAIL_PORT'),
'connection_class' => 'plain',
'connection_config' => [
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'ssl' => env('MAIL_ENCRYPTION') === 'ssl' ? 'ssl' : 'tls',
],
],
],
],
Transport class to bridge Laravel’s Swift_Transport interface with Laminas\Mail\Transport\TransportInterface.Dependencies:
laminas/laminas-mail (fork), laminas/laminas-crypt (for CRAM-MD5).laminas-crypt may introduce additional dependencies (e.g., phpseclib for encryption).Medium Risk:
Mail facade, increasing maintenance burden.laminas-mail may not be optimized for Laravel’s use case (e.g., SwiftMailer is tuned for Laravel’s event system and queueing).Mail facade abstracts this risk.Mitigation:
Why Replace SwiftMailer?
Transport Strategy:
File transport needed for testing?connection_time_limit tuning?Authentication:
Mail config, or a secrets manager)?Long-Term Viability:
symfony/mailer later?Performance:
Sent/Failed events)?Laravel Core Compatibility:
Mail facade by creating a custom Transport adapter (e.g., LaminasMailTransport implementing Swift_Transport).Mailable classes for templating (Blade/Markdown) since the package handles MIME composition.Mail::to()->queue()) will work if the transport supports async operations (requires custom implementation).Alternative Stacks:
Incompatible Stacks:
symfony/mailer over this fork.Assessment Phase:
Proof of Concept:
config/mail.php with laminas-mail.Incremental Rollout:
Transport adapter for Laravel’s Mail facade.File for local testing).laminas-mail.Fallback Plan:
Laravel Versions:
Mail facade evolves.PHP Extensions:
openssl for TLS/SSL (common for SMTP).laminas-crypt (for CRAM-MD5) may pull in phpseclib; ensure no conflicts with existing dependencies.Database/Storage:
Prerequisites:
composer.json to include the fork:
"require": {
"oroinc/laminas-mail": "^2.15.0",
"laminas/laminas-crypt": "^3.0"
}
Step-by-Step Integration:
Transport adapter (e.g., app/Transport/LaminasMailTransport.php):
namespace App\Transport;
use Laminas\Mail\Transport\Smtp as LaminasSmtpTransport;
use Laminas\Mail\Transport\SmtpOptions;
use Swift
How can I help you explore Laravel packages today?