The SMTP client portion extracted from gen_smtp
Switch branches/tags
Nothing to show
Pull request Compare This branch is 9 commits ahead, 124 commits behind Vagabond:master.
Latest commit d938764 Feb 21, 2012 Bill Barnhill Move to



Provide just the SMTP client portion from the SMTP server framework gen_smtp.

The SMTP client supports PLAIN, LOGIN, CRAM-MD5 authentication as well as STARTTLS and SSL (port 465).

Also included is a MIME encoder/decoder, sort of according to RFC204{5,6,7}.

gen_smtp developers (much thanks to them!):

  • Andrew Thompson (andrew AT
  • Jack Danger Canty (code AT
  • Micah Warren (micahw AT

Modifications after split via fork made by:

  • Bill Barnhill (bill.barnhill AT

Who is using it?

  • Right now the extracted client is only used within the Hermes SMTP server, currently only for testing

If you'd like to share your usage of gen_smtp, please contact me.


Here's an example usage of the client:

gen_smtp_client:send({"", [""],
 "Subject: testing\r\nFrom: Andrew Thompson \r\nTo: Some Dude \r\n\r\nThis is the email body"},
  [{relay, ""}, {username, ""}, {password, "mypassword"}]).

The From and To addresses will be wrapped in <>s if they aren't already, TLS will be auto-negotiated if available (unless you pass {tls, never}) and authentication will by attempted by default since a username/password were specified ({auth, never} overrides this).

If you want to mandate tls or auth, you can pass {tls, always} or {auth, always} as one of the options. You can specify an alternate port with {port, 2525} (default is 25) or you can indicate that the server is listening for SSL connections using {ssl, true} (port defaults to 465 with this option).