A simple email sending library for the Crystal programming language with SMTP support and concurrent sending capabilities.
EMail for Crystal is a library for sending emails from Crystal applications. It allows developers to construct emails with text, HTML, attachments, and embedded resources, and send them via SMTP servers with TLS and authentication support. It solves the problem of integrating email functionality into Crystal-based projects without relying on external services.
Crystal developers who need to add email-sending capabilities to their applications, such as web apps, background job processors, or notification systems.
Developers choose EMail for Crystal because it's a native, lightweight library specifically designed for Crystal, offering concurrent sending, TLS support, and a simple API without external dependencies beyond libssl for TLS operations.
Simple e-mail sending library
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The library offers a straightforward API with methods like `from`, `to`, and `message` for quick email construction, as shown in the minimal usage example with clear syntax.
Supports sending multiple emails concurrently using multiple SMTP connections via EMail::ConcurrentSender, improving performance for batch operations without parallel threading.
Provides secure email transmission with TLS via SMTPS or STARTTLS and SMTP AUTH using PLAIN and LOGIN mechanisms, as highlighted in the features and usage sections.
Fully supports multibyte characters in email content and headers, making it reliable for internationalized applications without encoding issues.
Includes detailed logging with a debug mode to inspect SMTP commands and responses, aiding in development and troubleshooting, though caution is needed for sensitive data.
The README explicitly states it does not support ESMTP features beyond TLS and authentication, which may restrict advanced email functionalities like delivery notifications.
Requires libssl and libcrypto libraries for TLS operations, adding setup complexity and potential portability issues, especially in constrained environments.
Concurrent sending is implemented with only one thread (not parallel), which might not scale optimally for extremely high-throughput or massively parallel email systems.
As a library for Crystal, it has a smaller community and ecosystem compared to more popular languages, which could affect long-term support, documentation updates, and integration options.