[Resolvido] Erro ao enviar email - Can't send command to SMTP host
7 respostas
J
jeanmalvessi
Bom dia!
Estou tentando fazer um envio de email, mas acabei batendo em um erro que não estou conseguindo resolver…
O erro é o seguinte : [javax.mail.MessagingException: Can’t send command to SMTP host; nested exception is: java.net.SocketException: Connection closed by remote host]
Estou utilizando as seguintes propriedades:
Properties p = new Properties();
p.setProperty("mail.smtp.starttls.enable", "true");
p.setProperty("mail.transport.protocol", "smtp");
p.setProperty("mail.smtp.host", ConfiguracaoGlobal.getConfiguracaoGlobal().getServidorSTMP());
p.setProperty("mail.smtp.port", ConfiguracaoGlobal.getConfiguracaoGlobal().getPorta());
p.setProperty("mail.smtp.auth", ConfiguracaoGlobal.getConfiguracaoGlobal().getAutentificacao().toString());
com o common-email, ele já deixa tudo de mão beijada
J
jeanmalvessi
Cara, estou usando o javax.mail e não tenho como trocar, a não ser que altere várias coisas… Gostaria de resolver o problema do jeito que está
A
andre.froes
tenta com esse modelo então:
packageorg.kodejava.example.mail;importjavax.mail.*;importjavax.mail.internet.InternetAddress;importjavax.mail.internet.MimeMessage;importjava.util.Date;importjava.util.Properties;publicclassGmailSendEmailSSL{publicstaticfinalStringUSERNAME="username";publicstaticfinalStringPASSWORD="password";publicstaticvoidmain(String[]args)throwsException{//// Email information such as from, to, subject and contents.//StringmailFrom="[email removido]";StringmailTo="[email removido]";StringmailSubject="SSL - Gmail Send Email Demo";StringmailText="SSL - Gmail Send Email Demo";GmailSendEmailSSLgmail=newGmailSendEmailSSL();gmail.sendMail(mailFrom,mailTo,mailSubject,mailText);}privatevoidsendMail(StringmailFrom,StringmailTo,StringmailSubject,StringmailText)throwsException{Propertiesconfig=createConfiguration();//// Creates a mail session. We need to supply username and// password for Gmail authentication.//Sessionsession=Session.getInstance(config,newAuthenticator(){@OverrideprotectedPasswordAuthenticationgetPasswordAuthentication(){returnnewPasswordAuthentication(GmailSendEmailSSL.USERNAME,GmailSendEmailSSL.PASSWORD);}});//// Creates email message//Messagemessage=newMimeMessage(session);message.setSentDate(newDate());message.setFrom(newInternetAddress(mailFrom));message.setRecipient(Message.RecipientType.TO,newInternetAddress(mailTo));message.setSubject(mailSubject);message.setText(mailText);//// Send a message//Transport.send(message);}privatePropertiescreateConfiguration(){returnnewProperties(){{put("mail.smtp.host","smtp.gmail.com");put("mail.smtp.auth","true");put("mail.smtp.port","465");put("mail.smtp.socketFactory.port","465");put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");}};}}
J
jeanmalvessi
É exatamente assim que estou trabalhando com a minha classe. Meu problema está nas properties…
Mas continua dando erro, agora diz o seguinte: Unrecognized SSL message
A
andre.froes
Tem o link no próprio api do javamail falando desse tipo de erro, o link direto pra ele é esse aqui, você está tentando enviar um email seguro por uma porta insegura.
A
andre.froes
ah, um detalhe, se você está enviando um e-mail com SSL, você deve utilizar smtps
J
jeanmalvessi
Não tinha jeito, mas acabei resolvendo escolhendo um email de outro servidor para servir como email padrão de envio…