Name: NioSmtpClient
Owner: HubSpot
Description: Smtp Client based on Netty
Created: 2017-03-02 15:56:20.0
Updated: 2018-03-28 17:31:53.0
Pushed: 2018-03-28 17:32:54.0
Homepage:
null
Size: 649
Language: Java
GitHub Committers
User | Most Recent Commit | # Commits |
Other Committers
User | Email | Most Recent Commit | # Commits |
README
NioSmtpClient
High performance SMTP client in Java based on Netty. This client is well tested and heavily used at HubSpot.
Features
- High performance, designed to handle many concurrent connections
- Supports TLS, pipelining, chunking,
SIZE
, SMTPUTF8
, and other ESMTP RFCs
- Send from specific IP addresses
- Optionally keeps connections alive to send subsequent emails
- Parses the
EHLO
response and chooses the most-efficient sending method
- Interceptor support to modify or instrument commands
- Comprehensive unit and integration tests
Dependencies
This project depends on Java8, Netty, and Guava.
Java Docs
See http://github.hubspot.com/NioSmtpClient/1.0.0/
Notes For Developers
- NEVER execute blocking commands on an eventloop thread (i.e.
CountDownLatch.await
or Future.get
)
- Calls out to unknown functions (i.e. callbacks or event listeners) should always be done on isolated thread pools.
- Slow but not necessarily blocking operations should also be avoided
- Attempt to avoid doing long running tasks on event loop threads
- Use
new
as sparingly as possible to avoid creating garbage:
- Share objects when possible
- Use netty bytebuf allocators when possible
- Use netty recyclers for objects that can be recycled.
License
Apache 2.0