laminas/laminas-mail
Abandoned Laminas component for composing, parsing, and sending email messages. No further development; use ddeboer/imap for IMAP, zbateson/mail-mime-parser for MIME parsing, and symfony/mailer for sending mail.
Pros:
Message, Transport, and Headers components, aligning well with Laravel’s service container and dependency injection patterns.Sendmail, SMTP, and File transports, with extensibility via TransportInterface. This maps neatly to Laravel’s SwiftMailer or Mail facade but offers more granular control.laminas-crypt in v2.24.0), reducing bloat.Cons:
symfony/mailer. This introduces technical debt risk and long-term unsustainability.Mail facade (powered by symfony/mailer) already provides similar functionality with better Laravel integration.laminas/laminas-mail:^2.25).Laminas\Mail\Message, TransportInterface, and configurations to Laravel’s container.// app/Providers/AppServiceProvider.php
public function register()
{
$this->app->singleton(\Laminas\Mail\Transport\TransportInterface::class, function ($app) {
return new \Laminas\Mail\Transport\Smtp(
$app['config']['mail.smtp.host'],
$app['config']['mail.smtp.port'],
$app['config']['mail.smtp.secure']
);
});
}
$mail = new \Laminas\Mail\Message();
$mail->setBody('Hello!')
->setFrom('from@example.com')
->addTo('to@example.com')
->setSubject('Test');
$transport = $this->app->make(\Laminas\Mail\Transport\TransportInterface::class);
$transport->send($mail);
Mail facade (uses symfony/mailer) is preferred for new projects due to active maintenance and Laravel-specific features (e.g., Mailable classes, queues, events).symfony/mailer or Laravel’s Mail facade via a phased refactor.Mail facade (e.g., advanced MIME handling)?symfony/mailer or Laravel’s native solution?SwiftMailer/symfony/mailer in benchmarks?TransportInterface in a job).Mail facade, Mailable classes, or Notifiable traits.symfony/mailer (used by Laravel under the hood).Mail facade with custom transports.laminas/laminas-mail (e.g., Message, Transport instantiation).// app/Services/LaminasMailService.php
class LaminasMailService
{
public function send(Laminas\Mail\Message $message)
{
$transport = app(\Laminas\Mail\Transport\TransportInterface::class);
$transport->send($message);
}
}
Mail::to()->send().| Laminas Feature | Laravel Equivalent |
|---|---|
Message |
Illuminate\Mail\Message |
| SMTP Transport | Mail::raw($body, $callback) or Mailable |
| Attachments | $message->attach() |
| HTML/Text Alternatives | $message->subject('...')->markdown('view') |
| Custom Headers | $message->withSwiftMessage(fn($m) => $m->getHeaders()->addTextHeader('X-Custom', 'value')) |
mail.php config.TransportInterface, ensure it’s compatible with Laravel’s event system (e.g., MailSent events).symfony/polyfill-intl-idn; Laravel’s Mail facade does the same.Mail facade.2.25.1) to avoid surprises.How can I help you explore Laravel packages today?