All Projects → hoaproject → Mail

hoaproject / Mail

Licence: other
The Hoa\Mail library.

Programming Languages

PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to Mail

ESP-Mail-Client
⚡️Arduino Mail Client Library to send, read and get incoming mail notification for ESP32, ESP8266 and SAMD21 devices. The library also supported other Arduino devices using Clients interfaces e.g. WiFiClient, EthernetClient, and GSMClient.
Stars: ✭ 78 (+225%)
Mutual labels:  mail, imap, smtp, sendmail
Rainloop Webmail
Simple, modern & fast web-based email client
Stars: ✭ 3,618 (+14975%)
Mutual labels:  mail, imap, smtp
Mailcow Dockerized
mailcow: dockerized - 🐮 + 🐋 = 💕
Stars: ✭ 4,573 (+18954.17%)
Mutual labels:  mail, imap, smtp
Neutron
Self-hosted server for the ProtonMail client
Stars: ✭ 452 (+1783.33%)
Mutual labels:  mail, imap, smtp
enough mail
IMAP, POP3 and SMTP clients for Dart developers. Contains both low level as well as a high level API.
Stars: ✭ 78 (+225%)
Mutual labels:  mail, imap, smtp
Excision-Mail
Fullstack, security focused mailserver based on OpenSMTPD for OpenBSD using ansible
Stars: ✭ 108 (+350%)
Mutual labels:  mail, imap, smtp
imail
small mail server
Stars: ✭ 88 (+266.67%)
Mutual labels:  mail, imap, smtp
Free Email Forwarding
The best free email forwarding for custom domains. Visit our website to get started (SMTP server)
Stars: ✭ 2,024 (+8333.33%)
Mutual labels:  mail, smtp, sendmail
Docker Mailserver
Production-ready fullstack but simple mail server (SMTP, IMAP, LDAP, Antispam, Antivirus, etc.) running inside a container.
Stars: ✭ 8,115 (+33712.5%)
Mutual labels:  mail, imap, smtp
Hydroxide
A third-party, open-source ProtonMail CardDAV, IMAP and SMTP bridge
Stars: ✭ 578 (+2308.33%)
Mutual labels:  mail, imap, smtp
fs2-mail
asynchronous library for sending and receiving mail via fs2._
Stars: ✭ 39 (+62.5%)
Mutual labels:  mail, imap, smtp
Maddy
✉️ Composable all-in-one mail server.
Stars: ✭ 2,800 (+11566.67%)
Mutual labels:  mail, imap, smtp
skirnir
Skirnir Email Server
Stars: ✭ 31 (+29.17%)
Mutual labels:  mail, imap, smtp
Mail
Library to send e-mails over different transports and protocols (like SMTP and IMAP) using immutable messages and streams. Also includes SMTP server.
Stars: ✭ 399 (+1562.5%)
Mutual labels:  mail, imap, smtp
James Project
Emails at the heart of your business logic!
Stars: ✭ 485 (+1920.83%)
Mutual labels:  mail, imap, smtp
Neomutt
✉️ Teaching an Old Dog New Tricks -- IRC: #neomutt on irc.libera.chat
Stars: ✭ 2,343 (+9662.5%)
Mutual labels:  mail, imap, smtp
Mailu
Insular email distribution - mail server as Docker images
Stars: ✭ 3,151 (+13029.17%)
Mutual labels:  mail, imap, smtp
MailDemon
Smtp server for mass emailing, managing email lists and more. Built on .NET Core. Linux, MAC and Windows compatible.
Stars: ✭ 113 (+370.83%)
Mutual labels:  mail, smtp
PySMS
Simple Python API that that allows you to send texts via SMTP with a best effort approach and process replies via IMAP
Stars: ✭ 19 (-20.83%)
Mutual labels:  imap, smtp
Mailozaurr
Mailozaurr is a PowerShell module that aims to provide SMTP, POP3, IMAP and probably some other ways to interact with Email. Underneath it uses MimeKit and MailKit libraries written by Jeffrey Stedfast.
Stars: ✭ 107 (+345.83%)
Mutual labels:  imap, smtp

Hoa


Build status Code coverage Packagist License

Hoa is a modular, extensible and structured set of PHP libraries.
Moreover, Hoa aims at being a bridge between industrial and research worlds.

Hoa\Mail

Help on IRC Help on Gitter Documentation Board

This library allows to compose and send rich emails (textual contents, HTML documents, alternative contents, attachments etc., this is very extensible). Email can be sent with sendmail or SMTP. The SMTP layer supports TLS and PLAIN, LOGIN and CRAM-MD5 authentications.

In a near future, this library will also allow to receive and parse emails.

Learn more.

Installation

With Composer, to include this library into your dependencies, you need to require hoa/mail:

$ composer require hoa/mail '~0.0'

For more installation procedures, please read the Source page.

Testing

Before running the mail suites, the development dependencies must be installed:

$ composer install

Then, to run all the test suites:

$ vendor/bin/hoa test:run

For more information, please read the contributor guide.

Quick usage

We propose a quick overview to send a very simple email with only one content, and then, a more complex email with an alternative content and an attachment.

Simple email

Before all, just like any messaging softwares, we have to setup the transport. We will send our email by using SMTP as the default transport. We will specify a socket to the SMTP server, a login and a password:

Hoa\Mail\Message::setDefaultTransport(
    new Hoa\Mail\Transport\Smtp(
        new Hoa\Socket\Client('tcp://mail.domain.tld:587'),
        'gordon_freeman',
        '*********'
    )
);

Then, we will get an instance of a message and set all the headers, such as From, To and Subject, we will add a textual content and we will send it:

$message            = new Hoa\Mail\Message();
$message['From']    = 'Gordon Freeman <[email protected]>';
$message['To']      = 'Alyx Vance <[email protected]>';
$message['Subject'] = 'Hoa is awesome!';

$message->addContent(
    new Hoa\Mail\Content\Text('Check this out: http://hoa-project.net/!')
);

$message->send();

Notice that we can use any view or template library to produce the content of the mail!

Rich email

Now, instead of having only one textual content, we will have an alternative content: either textual or HTML.

$message->addContent(
    // We have either…
    new Hoa\Mail\Content\Alternative([
        // … a text content
        new Hoa\Mail\Content\Text(
            'Check this out: http://hoa-project.net/!'
        ),
        // … or an HTML content.
        new Hoa\Mail\Content\Html(
            '<a href="http://hoa-project.net/">Check this ' .
            '<strong>out</strong>!</a>'
        )
    ])
);

Then, to add an attachment, we will add a new kind of content. The attachment is an image that will be named Foobar.jpg. Thus:

$message->addContent(
    new Hoa\Mail\Content\Attachment(
        new Hoa\File\Read('Attachment.jpg'),
        'Foobar.jpg'
    )
);

And finally, we send the email:

$message->send();

Complex email

Now imagine we do not want the image to be only attached but appear in the HTML content. These contents are related. Here is how to construct the email (with more variables to clarify):

// The image.
$attachment = new Hoa\Mail\Content\Attachment(
    new Hoa\File\Read('Attachment.jpg'),
    'Foobar.jpg'
);
// The text content.
$text = new Hoa\Mail\Content\Text('Check this out: http://hoa-project.net/!');
// The HTML content.
$html = new Hoa\Mail\Content\Html(
    '<img src="' .
    // The HTML image URL is the attachment ID URL.
    $attachment->getIdUrl() .
    '" />'
);

$message->addContent(
    // Alternative contents and attachment are related.
    new Hoa\Mail\Content\Related([
        // We still have 2 alternative contents: text or HTML.
        new Hoa\Mail\Content\Alternative([$text, $html]),
        $attachment
    ])
);

Documentation

The hack book of Hoa\Mail contains detailed information about how to use this library and how it works.

To generate the documentation locally, execute the following commands:

$ composer require --dev hoa/devtools
$ vendor/bin/hoa devtools:documentation --open

More documentation can be found on the project's website: hoa-project.net.

Getting help

There are mainly two ways to get help:

Contribution

Do you want to contribute? Thanks! A detailed contributor guide explains everything you need to know.

License

Hoa is under the New BSD License (BSD-3-Clause). Please, see LICENSE for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].