Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hubspot/niosmtpclient
Smtp Client based on Netty
https://github.com/hubspot/niosmtpclient
email java java8 netty nio smtp
Last synced: 21 days ago
JSON representation
Smtp Client based on Netty
- Host: GitHub
- URL: https://github.com/hubspot/niosmtpclient
- Owner: HubSpot
- License: apache-2.0
- Created: 2017-03-02T15:56:20.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-09-17T16:09:06.000Z (about 2 months ago)
- Last Synced: 2024-10-15T03:40:13.134Z (21 days ago)
- Topics: email, java, java8, netty, nio, smtp
- Language: Java
- Size: 791 KB
- Stars: 28
- Watchers: 149
- Forks: 24
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
NioSmtpClient [![Build Status](https://travis-ci.org/HubSpot/NioSmtpClient.svg?branch=master)](https://travis-ci.org/HubSpot/NioSmtpClient)
=============High performance SMTP client in Java based on [Netty](https://netty.io/). This client is well tested and heavily used at HubSpot.
### Maven Dependency
```xml
com.hubspot
NioSmtpClient
1.1.0```
### 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