Skip to content

Instantly share code, notes, and snippets.

@imod
Created December 22, 2011 09:23
Show Gist options
  • Save imod/1509654 to your computer and use it in GitHub Desktop.
Save imod/1509654 to your computer and use it in GitHub Desktop.
runDumbster with web
import java.util.Iterator;
import com.dumbster.smtp.SimpleSmtpServer
import org.mortbay.jetty.Server
import org.mortbay.jetty.servlet.*
import groovy.servlet.*
import javax.servlet.http.*
@Grapes([
@Grab(group='dumbster', module='dumbster', version='1.6'),
@Grab(group='javax.mail', module='mail', version='1.4.4'),
@Grab(group = 'org.mortbay.jetty', module = 'jetty-embedded', version = '6.1.0')
])
@GrabExclude('javax.activation:activation')
class MyServlet extends GroovyServlet {
def dumbster
public void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
def out = response.writer
def msgId = request.getParameter("msgId");
if(msgId){
out.write "<html><head><title>Inbox</title></head><body>"
def msg = dumbster.getReceivedEmail().find { mail ->
mail.getHeaderValue('Message-ID') == msgId
}
if(msg){
out.write "<table>"
msg.getHeaderNames().each {
out.write "<tr><td><b>$it</b></td><td>"
out.write msg.getHeaderValue(it) + "</td></tr>"
}
out.write "</table>"
}
}
out.write """
<html><head><title>Inbox</title></head><body>
<table width='100%' border='1'>
<tr style='font-weight:bold;'><td width='20%'>From</td><td width='20%'>To</td><td width='40%'>Subject</td><td width='20%'>Date</td></tr>
"""
dumbster.getReceivedEmail().each { mail ->
out.write "<tr><td>"
out.write mail.getHeaderValue('From')+"</td><td>"
out.write mail.getHeaderValue('To')+"</td><td>"
out.write "<a href='show.g?msgId="+mail.getHeaderValue('Message-ID') +"'>" + mail.getHeaderValue('Subject') + "</a>"
out.write "</td><td>"+mail.getHeaderValue('Date')
out.write "</td></tr>"
}
}
}
def runDumbster(duration){
println "start dumbster..."
def dumbster = com.dumbster.smtp.SimpleSmtpServer.start(9999)
def jetty = new Server(8080)
def jcontext = new Context(jetty, "/", Context.SESSIONS)
jcontext.resourceBase = "."
jcontext.addServlet(new ServletHolder(new MyServlet(dumbster: dumbster)), "*.g")
jetty.start()
sleep duration
println "...stoping dumbster"
dumbster.stop()
jetty.stop()
}
runDumbster(100000)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment