Serviço de envio de e-mail

É um aplicativo separado que irá rodar independente de Tomcat. Ele pode ser iniciado manualmente por linha de comando ou instalado como serviço (Windows/Linux).

Essa rotina olha de tempos em tempos (parâmetro configurado no arquivo .ini) a tabela TB_MENSAGENS_ENVIADAS e TB_MENSAGENS_ENVIADAS_DEST. Pegando sempre 100 destinatários por vez. Com isso, todas as rotinas (ICoruja, agendador, controles de licença, log´s de erro, …) passam a gravar nestas tabelas. Só irá mandar email´s que foram registrados nas tabelas acima. Não há mais necessidade de limpeza de cache ou reiniciar Tomcat. O serviço pode ser retirado do ar sem parar o sistema.

Foi criado um conceito de prioridade no envio de email (campo MEV_PRIORIDADE). Hoje todas as rotinas gravam o código 9999999. Apenas a rotina “Não tem ou esqueceu sua senha” grava o código 10, portanto os email´s desta rotina tem prioridade. Quanto menor o valor do campo MEV_PRIORIDADE, mais cedo o email será enviado.

Em caso de falha no envio para um destinatário, será feito mais 9 tentativas. Sendo que cada nova tentativa será feita após uma hora.

Em virtude de um tratamento na rotina para não enviar email´s em duplicidade, a rotina pode ser instalado em mais de um servidor.

Arquivos necessários:

  • Jar do serviço, “.jar”.
  • Arquivo de configuração, “.ini”

Os arquivos devem ser copiados para a maquina com o tomcat. Exemplo:

  • c:\edusoft\servicos\envio_email (Se a mesma não existir deve-se criar.)

1° PASSO - Configurando conta de e-mail(arquivo de configuração):

  • [smtp_properties] conforme seu provedor de e-mail, segue exemplo abaixo das configurações do gmail:
  mail.smtp.host=smtp.gmail.com
  mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
  mail.smtp.auth=true
  mail.smtp.port=587
  mail.smtp.starttls.enable=true
  mail.transport.protocol=smtp

[smtp_autentication]:

  [email protected]
  password=suasenhaaqui

[geral_properties], propriedades gerais:

E-mail de resposta que será utilizado como padrão quando não haver remetente.

  • sender.name=Instituição ABC

Nome do remetente padrão quando não haver remetente.

  • utilizaEmailDaContaComoRemetente=S

Quando “S”, irá enviar e-mail com remetente conforme a conta configurada no parâmetro sender.email.

  • minutes.to.check=30

Tempo que a rotina leva para checar se existe novo e-mail a ser enviado. Em minutos. A cada check são recuperados e enviados 100 e-mail.

  • email.provider=MensagensEnviadas
  • log.level=WARN

Configurando database(arquivo de configuração):

[database_properties]:
   driver=oracle.jdbc.OracleDriver  <- (Nome do driver)
   url=jdbc:oracle:thin://@LIBRA:1521:ORACLE11G   <- (url de conexão)
   user=seu_usuario
   password=sua_senha

1. ORACLE (exemplo)

2. SQLSERVER (exemplo)

Imagem geral de como deve estar o arquivo de configuração:

2° PASSO - Iniciando serviço (via linha de comando):

No prompt de comando. Acessar a pasta onde está localizado o jar.

  • Executando o jar:
java -jar [nome_do_jar].jar
  • Comandos disponíveis:

-h - Help do serviço, lista todos comandos.

-opcao

  • testEmail

testa configuração da conta de e-mail enviado um e-mail da conta configurada no .ini para o e-mail informado no parametro -email.

send

inicia serviço de envia de e-mail.

-email

utilizado para o teste de e-mail. Deve ser informado o endereço de e-mail que se deseja receber a menssagem de teste.

-arquivo

possibilita informar um arquivo de configuração. Se não for informado vai procurar pelo padrão, que deve estar na mesma pasta do jar, com nome Servico_EnvioEmail.ini.

-enviaNoDominioEdusoft

parâmetro exclusivo para uso da Edusoft. Por padrão ele tem o valor N, com esse valor não envia e-mail dentro da Edusoft. Para enviar e-mail internamente na Edusfot o valor deve ser S.

Comportamentos do serviço de envio de e-mail:

  • Cópia oculta

Todo e-mail que tenha mais de um destinatário, será enviado um e-mail para o remetente da mensagem, com o conteúdo da mensagem original. Para os destinatários, será enviado uma cópia oculta para cada um com o conteúdo da mensagem original.

Criação de Serviço a partir de arquivo executável .JAR (32bits e 64Bits) - Windows

Descompacte o arquivo “Serviço windows.rar” dentro da pasta onde se encontra o jar “Servico_EnvioEmail.jar”, que deve estar na pasta C:\edusoft\servicos\envio_email. Ao ser descompactado sua pasta deve ficar com os seguintes arquivos conforme mostra a imagem1.

Imagem1 – arquivos descompactados

Após ser descompactado Copie o arquivo prunsrv.exe para a pasta c:\windows\system32 de acordo com a arquitetura do sistema operacional, se for 64bits copie da pasta C:\edusoft\servicos\envio_email_\amd64\prunsrv.exe

Se você chegou até aqui e seguiu todos passos conforme descrito no manual o arquivo Install.bat já deve estar correto. Mas para garantir vamos editar o mesmo e conferir se todos caminhos estão corretos. Verificar caminhos destacados na imagem2 que se encontra abaixo.

Imagem2 – Install.bat

Após salvar o arquivo, execute o mesmo com privilégios de administrador.

Execute com privilégio de administrador o arquivo “Iniciar serviço.bat” que foi descompactado na pasta.

Para excluir ou parar o serviço devem ser utilizados os arquivos descompactados na pasta, “Uninstall.bat” e “Parar serviço.bat”.

Verifique na lista de serviços do windows ( services.msc ) para certificar que o serviço foi criado e iniciado no windows.

Criação de Serviço a partir de arquivo executável .JAR (32bits e 64Bits) – Linux

Copiar o arquivo “ServicoEnvioEmail_Linux.rar” para a pasta onde encontrar-se o jar de serviço de e-mail (Padrão: /edusoft/servicos/envio_email).

1 – Descompactar os arquivos de modo que fiquem ma raiz junto ao jar do serviço e dar permissão de execução. 2 – Caso o jar não esteja na pasta padrão (/edusoft/servicos/envio_email), é necessário editar os arquivos “EdusoftEnvioDeEmail” e “start_Servico_EnvioEmail.sh” e ajustar o caminho da pasta.

3 – Copiar o arquivo “EdusoftEnvioDeEmail” para a pasta de inicialização do linux (Padrão Debian/Ubuntu: /etc/init.d) e dar permissão de execução.

4 – Acessar a pasta de inicialização do linux (/etc/init.d) e rodar o comando “update-rc.d EdusoftEnvioDeEmail defaults”.

Após seguir o procedimento para iniciar ou parar o serviço basta usar o camando padrão do sistema “/etc/init.d/EdusoftEnvioDeEmail start” ou “/etc/init.d/EdusoftEnvioDeEmail stop”. Em caso de reinicialização do servidor o serviço será inicializado automaticamente.

Para remover o serviço basta executar o comando “update-rc.d EdusoftEnvioDeEmail remove” e excluir o arquivo EdusoftEnvioDeEmail da pasta de inicialização do sistema (/etc/init.d).

Problemas conhecidos 1) Erro original: javax.mail.MessagingException: Could not convert socket to TLS;nested exception is: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target.

Retirar o scaneamento ssl ou retirar o scaneamento de envio de email smtp do seu antivirus.

2) Verifique a quantidade de e-mail que seu provedor possibilita enviar por dia. Se a quantidade enviada for igual a máxima permitida pelo seu provedor, os e-mail seguintes serão barrados e consequentemente não enviados.

3) Verifique o tamanho máximo de anexo que seu provedor permite enviar. Caso um e-mail tenha um anexo maior que o permitido pelo seu provedor, o mesmo será barrado e consequentemente não enviado.

4) Não envia email pelo gmail. Verificar se você ativou o envio de email através de aplicativos menos seguros:

https://support.google.com/mail/answer/13287?hl=en

https://www.google.com/settings/security/lesssecureapps

https://myaccount.google.com/security?utm_source=OGB&pli=1#connectedapps → Permitir aplicativos menos seguros

5) Caso não esteja mandando e-mail, você pode configurar o serviço para executar em modo de debug (arquivo de configuração .ini). Com esse modo ativado, você terá informações mais detalhadas que podem facilitar encontrar o problema. Este modo deve ser mudado para WARN depois de o serviço estiver funcionando.

6) No Gmail. Mesmo realizando todos passos acima, continua a não enviar e-mail.

Primeiro passo: Verifique na sua caixa de entrada, do e-mail configurado no .ini, se você não recebeu nenhum e-mail ou notificação do google com os temas “Alguém tem sua senha” ou “Tentativa de login bloqueada”. Se sim, deve aparecer um link com o label “REVISAR SEUS DISPOSITOS AGORA” ou algo semelhante, todos vão te levar para a mesma tela. Clique nesse botão ou link e libere o acesso para todos dispositivos.

Segundo passo: Ainda logado no Gmail e no mesmo navegador, acesse o link https://accounts.google.com/DisplayUnlockCaptcha, clique em continuar, ou se solicitar faça login com seus dados do Gmail.

Terceiro passo: Tente novamente enviar um e-mail de testes. Se tudo deu certo o e-mail deve ser enviado com sucesso.

7) O arquivo de configuração, “.ini”. sempre deve estar com codificação em “ANSI”. Caso não esteja vai gerar execução e o serviço não subirá.

  • (edição externa)