Title:  Lamson 1.0pre2, HTML Email (Oh Boy)




h2. Lamson Without A Smarthost



h2. HTML Email


<pre class="code prettyprint">
from lamson import html, server
from config import testing

relay = server.Relay(host=None, port=25, debug=1)
hs = html.HtmlMail("style.css", "html_test.html")

title = "Test Message HTML"

msg = hs.respond(locals(), "content.markdown", From="zedshaw@zedshaw.com", 
                 To="zed.shaw@gmail.com", Subject="Test %(title)s")

relay.deliver(msg)
</pre>


!html_email_in_gmail.png!


h2. Getting This Release



h2. Lamson Changes

* Cleanup and tuning of the html code.
* Documenting the HtmlMail API.
* New HTML email generation with CleverCSS support and merging the CSS into the HTML results.
* Additional tests for the new MX query style of Relay.
* Implemented a feature to let the relay do its own delivery, rather than needing a smart host.  Requires PyDNS.
* Cleaned up the build so that it removes junk from the examples.
* Fixed up the lamson default help command so that it is more succinct.
* Properly skips spam filtering if the spam databse doesn't exist.
* Made the spam filter not barf if there's no spam db, which helps when testing.
* Now don't bother storing the START state since it's the default.
* Cleaned up mail some more and deprecated the MailRequest.msg and MailResponse.msg to be replaced with .base (since that's what it is).
* Added a simple method to copy the attachments of a MailRequest to a MailResponse.
* Got decent attachment copying implemented, mail api needs a bit of cleanup.
* Return an empty string when trying to encode a none.
* Minor bug in the safequeue, added logging so you can track oversize.
* Getting the headers right for replies to work, removed the first message.
* Added options to Queue and QueueReceiver to limit the size of incoming mail.
* Added a version command finally, with some good information.



h2. librelist.com Changes

* Force the permissions to be correct for serving up the archives.
* Make sure that bounces are always saved for later.
* Json convert script can't go there.
* Need to install simplejson to make the json work on librelist.
* Prevent loop back of messages from lamson to itself, and stop messages that should not be considered lists like unbounce and noreply.
* Implements a json version of the mailing list archives in addition to the regular MIME encoded ones.
* Update of changes from the live server for setting up the spam system.
* Migration to install the spam database on deployment.
* Added spam filtering to the admin handler where it counts.
* Confirmations are removed after they are verified.
* Template for bad list name help.
* Tweaked the formatting for the bad list name helper, and made sure that it returns to START.
* Now giving out an error message for people who get the name format wrong.
* Added additional headers needed for achives, and try to maintain the date and message-id headers.
* Production and staging deployment scripts setup and a migration to make those work.
* Implemented a simple bash based deployment setup for automating librelist deploys and migrations.
* Nope, can't add the - yet without some regex wizardry.
* Small change to allow - in the mailing list names.
* Updated the messages librelist sends out for readability.


h2. Librelist Archive Browser


