Mailman
Mailman provides a clean way of defining mailers in your Elixir applications
Install / Use
/learn @mailman-elixir/MailmanREADME
Mailman 👮
Mailman lets you send email from your Elixir app.
- Plain text or multi-part email (plain text and HTML)
- Inline images in HTML part
- Attachments (with semi-automatic MIME type detection)
- Easy-peasy SMTP config
- Rendering via EEx
- Standard quoted-printable encoding
- Automatic CC and BCC delivery
- Custom headers
- SMTP delivery timestamps
Mailman is a wrapper around the mighty (but rather low-level) gen_smtp, the popular Erlang SMTP library.
Which email library should I choose? Mailman vs. Bamboo vs. Swoosh
The Elixir ecosystem now offers a number of email libraries to choose from.
Mailman has been around the longest. As an Elixir wrapper around the battle-tested gen_smtp client, it is designed primarily with SMTP power users in mind. If you are interfacing directly with an SMTP relay, Mailman is for you.
If you instead work with a commercial email service like SendGrid or Mailgun, consider libraries like Bamboo and Swoosh, which come with clients for these services. Note that both of these libraries offer SMTP adapters as well.
Simple example
Emails are sent using the Mailman.deliver function. All you need is the email itself and a %Mailman.Context{} configuration struct:
context = %Mailman.Context{
config: %Mailman.SmtpConfig{
relay: "yourtdomain.com",
username: "userkey-here",
password: "passkey-here",
port: 25,
tls: :always,
auth: :always,
},
composer: %Mailman.EexComposeConfig{}
}
email = %Mailman.Email{
subject: "Hello Mailman!",
from: "mailman@elixir.com",
to: ["test1@tester123456.com"],
cc: ["test2@tester1234.com", "abcd@defd.com"],
bcc: ["1234@wsd.com"],
data: [
name: "Yo"
],
text: "Hello! <%= name %> These are Unicode: qżźół",
html: """
<html>
<body>
<b>Hello! <%= name %></b> These are Unicode: qżźół
</body>
</html>
"""
}
Mailman.deliver(email, context)
Copyright and License
Copyright (c) 2012 Kamil Ciemniewski
Mailman is released under the MIT License. See the LICENSE.md file for further details.
Related Skills
node-connect
344.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
99.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
