Skip to content

Mailman provides a clean way of defining mailers in your Elixir applications

License

Notifications You must be signed in to change notification settings

CargoSense/mailman

 
 

Repository files navigation

Mailman 👮

Cargosense Fork of Mailman

This is a very minor fork of Mailman which only removes a single line requiring httpotion in the mix.lock file. This library was not used anywhere, but has been abandoned for some time and restricts some of your dependency calculations when it is in the version tree. This fork will be kept even with main on mailman, but the base project has been inactive for some time so this fork is created without the expectation of an update upstream.

Elixir CI Module Version Hex Docs Total Download License Last Updated

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.

About

Mailman provides a clean way of defining mailers in your Elixir applications

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Elixir 99.9%
  • HTML 0.1%