Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Mail Parser Laravel Package

opcodesio/mail-parser

Simple, fast PHP 8+ email/MIME parser with a clean API—no mailparse extension required. Parse .eml strings/files, read headers (From/To/Subject/Date/size), and extract HTML/text bodies, parts, and attachments.

View on GitHub
Deep Wiki
Context7

Features

OPcodes's Mail Parser has a very simple API to parse emails and their MIME contents. Unlike many other parsers out there, this package does not require the mailparse PHP extension.

Has not been fully tested against RFC 5322.

Get Started

Requirements

  • PHP 8.0+

Installation

To install the package via composer, Run:

composer require opcodesio/mail-parser

Usage

use Opcodes\MailParser\Message;

// Parse a message from a string
$message = Message::fromString('...');
// Or from a file location (accessible with file_get_contents())
$message = Message::fromFile('/path/to/email.eml');

$message->getHeaders();                 // get all headers
$message->getHeader('Content-Type');    // 'multipart/mixed; boundary="----=_Part_1_1234567890"'
$message->getFrom();                    // 'Arunas <arunas@example.com>
$message->getTo();                      // 'John Doe <johndoe@example.com>
$message->getSubject();                 // 'Subject line'
$message->getDate();                    // `Date:` header as DateTime object
$message->getSize();                    // Email size in bytes

$message->getParts();       // array of \Opcodes\MailParser\MessagePart, which can be html parts, text parts, attachments, etc.
$message->getHtmlPart();    // \Opcodes\MailParser\MessagePart containing the HTML body
$message->getTextPart();    // \Opcodes\MailParser\MessagePart containing the Text body
$message->getAttachments(); // array of \Opcodes\MailParser\MessagePart that represent attachments

$messagePart = $message->getParts()[0];

$messagePart->getHeaders();                 // array of all headers for this message part
$messagePart->getHeader('Content-Type');    // value of a particular header
$messagePart->getContentType();             // 'text/html; charset="utf-8"'
$messagePart->getContent();                 // '<html><body>....'
$messagePart->getSize();                    // 312
$messagePart->getFilename();                // name of the file, in case this is an attachment part

Contributing

A guide for contributing is in progress...

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport