James is an open source SMTP, POP3 and NNTP server written in Java by the good folks at Apache. Its Mailet API enables automatic processing of emails, kind of what servlets do for HTTP requests. Introductory article part 1, part 2
Aspirin is an embeddable Java SMTP server. While useful mostly for send-only situations, it has some provisions to receive mails as well (to handle bounces and such).
Q: I'm marking my mails as SEEN, but next time I access the INBOX, they're once again presented as unread. What gives?
From the JavaMail FAQ : Just because a flag exists doesn't mean the flag is supported by all mail servers/providers. For instance, besides deleting messages, the POP protocol supports none of them. ... To find out what flags are supported, ask the folder with getPermanentFlags().
Q: I'm having trouble connecting to Gmail using JavaMail; something about "starttls". What gives?