Dummy SMTP: JavaMail API + DevNullSMTP

18:17 Vinicius Knob 0 Comments

O que quero mostrar é uma forma de testar o envio de e-mails em ambiente de desenvolvimento simulando um falso servidor SMTP com o framework DevNull SMTP. Pretendo mostrar duas formas de fazer isso: uma utiliza JndiHelper (para usuário de WebLogic Server) e outra utiliza Session (classe integrante da API JavaMail).

Com JndiHelper


1. Crie uma pasta no sistema (exemplo: \devNullSMTP)

2. Baixar o jar do framework DevNull SMTP e coloque nessa pasta.
Link: http://www.aboutmyip.com/AboutMyXApp/DevNullSmtp.jar

3. No console do WebLogin Server vá em Mail Session e crie um novo com os seguintes atributos:

Name: SMTPMailSession
JNDI Name: SMTPMailSession
JavaMail Properties:
mail.debug=True
mail.smtp.port=25
mail.transport.protocol=smtp
mail.smtp.host=127.0.0.1

4. Crie dentro da pasta \devNullSMTP a pasta para receber os emails (exemplo: \emails)

5. Executar em linha de comando o seguinte:

java -jar DevNullSmtp.jar -s emails

Para mais comandos ver http://www.aboutmyip.com/AboutMyXApp/DevNullSmtpUsage.jsp

6. No console que irá abrir, clique em Start Server.

7. Pronto. Observações: Todo e-mail enviado vai para pasta \emails com a terminação EML e pode ser visualizada no Notepad++. O console do DevNull SMTP loga todo o processo em 4 abas disponíveis, incluindo o próprio EML. O console do Eclipse efetua logs também, mas nada além do console do DevNull SMTP.

Com Session


O mesmo processo para usuário de JndiHelper com excessão do passo 3, pois as propriedades são setadas em código da seguinte maneira:

Properties props = new Properties();
props.put("mail.debug", "true");
props.put("mail.smtp.port", "25");
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.host", "127.0.0.1");
Session session = Session.getInstance(props, null);

O restante do processo segue da mesma forma.

Conclusão


Esse conhecimento permitiu a independência de desenvolvimento de funcionalidades que utilizam envio de e-mail. Tive muitos problemas no passado com funcionalidades desse tipo e sempre dependia de ambiente configurado para os testes, quando encontrava um erro não era apenas uma correção, mas também tinha que esperar por um deploy em ambiente de homologação. Espero que isso também seja útil para você.

Fonte



0 comentários: