Plugin Mail Connection reset
18/02/2014 18:10
1
Olá pessoal,
Estou com um problema que não deve ser difícil de resolver mas até o momento minhas buscas não foram felizes.
Utilizo o plugin Mail para enviar e-mails, configurei e testei o envio, tudo ok. Só que quando vou enviar um 2° e-mail logo após ja ter enviado um gera uma java.net.SocketException. Aguardando alguns minutos e tentando novamente o e-mail é enviado.
Alguém sabe por que e como evitar?
Segue detalhes do erro:
Connection reset. Stacktrace follows:
Message: Connection reset
Line | Method
->> 196 | read in java.net.SocketInputStream
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 122 | read in ''
| 503 | configureSSLSocket in com.sun.mail.util.SocketFetcher
| 234 | getSocket in ''
| 1672 | openServer . . . . in com.sun.mail.smtp.SMTPTransport
| 525 | protocolConnect in ''
| 291 | connect . . . . . in javax.mail.Service
| 104 | sendMessage in grails.plugin.mail.MailMessageBuilder
| 41 | sendMail . . . . . in grails.plugin.mail.MailService
| 115 | $tt__save in com.smartbiz.commercial.purchasing.PurchaseOrderController$$EOWF0lH8
| 200 | doFilter . . . . . in grails.plugin.cache.web.filter.PageFragmentCachingFilter
| 63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter
| 53 | doFilter . . . . . in grails.plugin.multitenant.core.servlet.CurrentTenantServletFilter
| 49 | doFilter in grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter
| 82 | doFilter . . . . . in grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter
| 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 615 | run . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 744 | run in java.lang.Thread
Tags: Mail Connection Reset


0
Alguém?
24/02/2014 18:26


0
Não seria limitações de infra? Ja deu uma olhada nas configurações e regras do seu smtp server?
De qualquer forma, amanhã posto aqui minhas config de email e você bate com as suas.
25/02/2014 04:26


0
Não sei Rony,
As configurações estão assim (config.groovy)
...
grails {

mail {
host = "smtp.gmail.com"
port = 465
username = "meuemail@email.com"
password = "xyz"
props = [
"mail.smtp.auth":"true",
"mail.smtp.socketFactory.port":"465",
"mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory",
"mail.smtp.socketFactory.fallback":"false"]
}
...}
25/02/2014 13:41


0
Help please.
06/03/2014 13:07


0
Não sei se irá te ajudar, mas vai aí minhas configurações:
Esta o domínio da minha empresa, mas é por que usamos Google APPS.

grails {
mail {
host = "smtp.gmail.com"
port = 465
username = "novasenha@mastersistemas.com.br"
password = "#########"
props = ["mail.smtp.auth":"true",
"mail.smtp.socketFactory.port":"465",
"mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory",
"mail.smtp.socketFactory.fallback":"false"]
}
}


def mailService

def enviaSenha = {

//enviado por e-mail a nova senha
mailService.sendMail {
from "novasenha@mastersistemas.com.br"
subject "Recuperação de dados de acesso"
text "Mensagem ******* "
to usuario.email
}

Não deixe de ler a política de envio de e-mais do google, acho que não é possível disparar vários emails seguidos( Política anti-spam )

07/03/2014 22:21


0
Olá Dyego,

Estou com o mesmo problema, você encontrou alguma solução?
30/05/2014 19:12


0
Oi Dyego,

connection reset normalmente ocorre quando você se conecta com o servidor e este para de aceitar suas conexões. Não me parece ser um problema do plugin, mas sim da própria conexão com o seu servidor, ou seja, o problema muito provávelmente está nos eu servidor que, por alguma razão, não está te permitindo enviar e-mails com uma frequência maior.

Se for um serviço pago, verifique se há alguma restrição de acesso: isto é bastante comum. Há serviços que te impedem mandar um número x de e-mails, por exemplo.

Outro ponto: tente uma outra configuração: com outro servidor de e-mail e verifique se o problema persiste.


0
Olá Henrique, obrigado pela resposta.
Eu suspeitei dessa questão do limite de envio, e cheguei a implementar um sistema de reenvio (uma tread separada que a cada x minutos envia a 1° requisição de envio de uma lista de requisições) estou esperando até 5min para realizar a próxima tentativa de envio e mesmo assim é muito comum não enviar.
Acho que se fosse este o caso eu esperar algo como 1min ja seria suficiente, não? tendo em vista que pelo browser eu consigo enviar com um intervalo bem pequeno...
Outro ponto é que se eu tentar enviar o e-mail e der o connection reset, eu encerro a aplicação e executo novamente (isso leva uns 60seg) e tento enviar o e-mail, e ele envia. Observei que sempre a 1° tentativa é bem sucedida, as seguintes é que geram o erro, mesmo eu esperando mais de 5min após o envio bem sucedido.
30/05/2014 22:47


2
Oi Dyego,

isto confirma minha suspeita: 90% de chance de ser algum controle no seu servidor de e-mail.

Você pode, se for apenas para enviar e-mail, usar alguma solução como o sendmail também: ele pode ser instalado no seu próprio servidor.

Um serviço que tenho usado e gostado bastante se chama Mandrill App http://www.mandrillapp.com

Ele fornece um servidor SMTP que, apesar de limitado, se vocÊ não for enviar muitos e-mails acaba te atendendo. É o que o Grails Brasil usa atualmente inclusive.

Experimente e depois me diga se sua situação melhorou, ok?


0
Olá Henrique,

utilizo o serviço do Google para enviar emails, sabe se ele tem essa limitação?

Tentei utilizar o Mandrill App e deu um erro de falha de autenticação apesar de eu ter conferido várias vezes e o usuário e a senha estão corretos, também conferi a porta, o host e está tudo ok. Tem como passar um exemplo da configuração pra eu ver o que estou fazendo de errado?

Segue a minha configuração:

mail {
host = "smtp.mandrillapp.com"
port = 587
username = "meuemail@mail.com"
password = "minhasenha"
props = ["mail.smtp.starttls.enable":"true",
"mail.smtp.port":"587"]
}


Obrigado.
03/06/2014 12:05


0
Oi Thiago,

sim: o serviço do Google tem esta limitação e, ainda pior: eles podem (e provávelmente vão) congelar sua conta caso descubram que você está enviando e-mails em massa por ele.

No caso eu não uso o plugin mail (nunca gostei dele), uso ao invés uma biblioteca da Apache Commons chamada "Commons Email". Já escrevi sobre isto no meu blog. Depois da uma olhada: http://www.itexto.net/devkico/?p=461


0
Valeu Henrique, obrigado pela ajuda vou tentar com o mandril.
03/06/2014 13:12


1
Funcionou perfeitamente Henrique, obrigado!
03/06/2014 13:39


2
Consegui com o Mandril também, cometi um erro que pode ser comum.
Coloquei como senha na configuração do plugin de email, a mesma senha que coloquei na criação da conta no Mandrill, quando deveria ter colocado uma chave (API key) gerada pelo próprio Mandrill.

Henrique, tenho que utilizar o plugin de email mesmo porque utilizo o plugin de email de confirmação que depende dele, mas muito obrigado pela dica, você matou a charada, realmente era o serviço de emails do Google que negava minha conexão.

Valeu.
03/06/2014 16:34



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto