All Projects → genkgo → Mail

genkgo / Mail

Licence: other
Library to send e-mails over different transports and protocols (like SMTP and IMAP) using immutable messages and streams. Also includes SMTP server.

Projects that are alternatives of or similar to Mail

enough mail
IMAP, POP3 and SMTP clients for Dart developers. Contains both low level as well as a high level API.
Stars: ✭ 78 (-80.45%)
Mutual labels:  mail, imap, mime, smtp
Neomutt
✉️ Teaching an Old Dog New Tricks -- IRC: #neomutt on irc.libera.chat
Stars: ✭ 2,343 (+487.22%)
Mutual labels:  mime, mail, smtp, imap
fs2-mail
asynchronous library for sending and receiving mail via fs2._
Stars: ✭ 39 (-90.23%)
Mutual labels:  mail, imap, mime, smtp
Mailcow Dockerized
mailcow: dockerized - 🐮 + 🐋 = 💕
Stars: ✭ 4,573 (+1046.12%)
Mutual labels:  mail, imap, smtp
Maddy
✉️ Composable all-in-one mail server.
Stars: ✭ 2,800 (+601.75%)
Mutual labels:  mail, smtp, imap
Mailu
Insular email distribution - mail server as Docker images
Stars: ✭ 3,151 (+689.72%)
Mutual labels:  mail, smtp, imap
Neutron
Self-hosted server for the ProtonMail client
Stars: ✭ 452 (+13.28%)
Mutual labels:  mail, smtp, imap
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 (-80.45%)
Mutual labels:  mail, imap, smtp
Mailmergelib
MailMergeLib is a mail message client library which provides comfortable mail merge capabilities for text, inline images and attachments, as well as good throughput and fault tolerance for sending mail messages.
Stars: ✭ 97 (-75.69%)
Mutual labels:  mime, mail, smtp
Excision-Mail
Fullstack, security focused mailserver based on OpenSMTPD for OpenBSD using ansible
Stars: ✭ 108 (-72.93%)
Mutual labels:  mail, imap, smtp
imail
small mail server
Stars: ✭ 88 (-77.94%)
Mutual labels:  mail, imap, smtp
Mail
The Hoa\Mail library.
Stars: ✭ 24 (-93.98%)
Mutual labels:  mail, imap, smtp
Docker Mailserver
Production-ready fullstack but simple mail server (SMTP, IMAP, LDAP, Antispam, Antivirus, etc.) running inside a container.
Stars: ✭ 8,115 (+1933.83%)
Mutual labels:  mail, smtp, imap
Hydroxide
A third-party, open-source ProtonMail CardDAV, IMAP and SMTP bridge
Stars: ✭ 578 (+44.86%)
Mutual labels:  mail, smtp, imap
Mailkit
A cross-platform .NET library for IMAP, POP3, and SMTP.
Stars: ✭ 4,477 (+1022.06%)
Mutual labels:  mime, smtp, imap
James Project
Emails at the heart of your business logic!
Stars: ✭ 485 (+21.55%)
Mutual labels:  mail, smtp, imap
Vmime
VMime Mail Library
Stars: ✭ 218 (-45.36%)
Mutual labels:  mime, smtp, imap
skirnir
Skirnir Email Server
Stars: ✭ 31 (-92.23%)
Mutual labels:  mail, imap, smtp
Rainloop Webmail
Simple, modern & fast web-based email client
Stars: ✭ 3,618 (+806.77%)
Mutual labels:  mail, smtp, imap
yggmail
End-to-end encrypted email for the mesh networking age
Stars: ✭ 72 (-81.95%)
Mutual labels:  imap, smtp

Genkgo/Mail - Modern PHP 7.3+ Mail Library

Latest Version Build Status Build Status Scrutinizer Code Quality Code Coverage

While analyzing what mail library to use when refactoring a code base, we discovered that the available ones are mostly legacy libraries. Some do not use namespaces and every library we encountered was merely a collection of scalar property bags than objects using encapsulation. Although we used these libs with joy in the past, they do not meet current quality standards. So, we built a new and better library according to modern programming principles.

Use this if you want to send e-mails over different transports and protocols using immutable messages and streams.

Send message quick and easy

$message = (new MessageBodyCollection('<html><body><p>Hello World</p></body></html>'))
    ->withAttachment(new FileAttachment('/order1.pdf', new ContentType('application/pdf')))
    ->createMessage()
    ->withHeader(new Subject('Hello World'))
    ->withHeader(From::fromEmailAddress('[email protected]'))
    ->withHeader(To::fromSingleRecipient('[email protected]', 'name'))
    ->withHeader(Cc::fromSingleRecipient('[email protected]', 'name'));

$transport = new SmtpTransport(
    ClientFactory::fromString('smtp://user:[email protected]/')->newClient(),
    EnvelopeFactory::useExtractedHeader()
);

$transport->send($message);

Install using composer

$ composer require genkgo/mail

Features

  • Use SMTP or mail() to send messages
  • Use IMAPv4 to read messages from your mailbox (no extension required)
  • Create replies and forward messages, including quoting of original message
  • Queue messages when transport fails
  • Automatically connects and reconnects after interval to SMTP server
  • Automatically generate alternative text for formatted messages
  • Optimal encoded headers, so no excessive (Q/B) encoded headers
  • Optimal encoded multipart messages
  • Only streams and connections are mutable
  • Messages and actors are immutable
  • Value objects protect against invalid states
  • Streams make sure the library has a low memory burden
  • Many objects but still easy API
  • 90%+ test coverage
  • Uses highest PHPStan detection level
  • Only uses TLS < 1.2 if not otherwise possible
  • Discourages SSL
  • DKIM signed message
  • Security is highly prioritized
  • SMTP server for testing purposes
  • Great RFC compliance
  • Cast messages to valid string source
  • Library has no external dependencies (but uses intl extension)
  • Only PHP 7.3 and up

Upcoming features

  • Encrypted and signed messages

Not planned

The following features are not planned for development by the owners, but could become part of the library when initiative is taken by the community.

  • POP Support
  • Mailbox abstraction layer

Documentation

RFC-compliance

This library tends to be as compliant with e-mail RFCs as possible. It should be compliant with the following RFCs.

Credits

This library was not able to exist without Zend/Mail and PHPMailer.

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].