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());
Você está utilizando commons-email?
para enviar um e-mail basta fazer isso:
public class EnviarEmail {
private static final String HOST = "smtp.gmail.com";
private static final String USER = "usuarioEmail";
private static final String PW = "senhaEmail";
private static final String OG = "teste@gmail.com";
public static Email conectar() throws EmailException {
Email email = new SimpleEmail();
email.setHostName(HOST);
email.setSmtpPort(587);
email.setAuthenticator(new DefaultAuthenticator(USER, PW));
email.setTLS(true);
email.setFrom(OG);
return email;
}
public static void enviar(Mensagem novaMensagem) throws EmailException {
Email email = new SimpleEmail();
email = conectaEmail();
email.setSubject(mensagem.getTitulo());
email.setMsg(mensagem.getMensagem());
email.addTo(mensagem.getDestino());
String resposta = email.send();
}
}
com o common-email, ele já deixa tudo de mão beijada 
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á 
tenta com esse modelo então:
package org.kodejava.example.mail;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;
public class GmailSendEmailSSL {
public static final String USERNAME = "username";
public static final String PASSWORD = "password";
public static void main(String[] args) throws Exception {
//
// Email information such as from, to, subject and contents.
//
String mailFrom = "email@gmail.com";
String mailTo = "email@gmail.com";
String mailSubject = "SSL - Gmail Send Email Demo";
String mailText = "SSL - Gmail Send Email Demo";
GmailSendEmailSSL gmail = new GmailSendEmailSSL();
gmail.sendMail(mailFrom, mailTo, mailSubject, mailText);
}
private void sendMail(String mailFrom, String mailTo,
String mailSubject, String mailText)
throws Exception {
Properties config = createConfiguration();
//
// Creates a mail session. We need to supply username and
// password for Gmail authentication.
//
Session session = Session.getInstance(config, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
GmailSendEmailSSL.USERNAME,
GmailSendEmailSSL.PASSWORD
);
}
});
//
// Creates email message
//
Message message = new MimeMessage(session);
message.setSentDate(new Date());
message.setFrom(new InternetAddress(mailFrom));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
message.setSubject(mailSubject);
message.setText(mailText);
//
// Send a message
//
Transport.send(message);
}
private Properties createConfiguration() {
return new Properties() {{
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");
}};
}
}
É exatamente assim que estou trabalhando com a minha classe. Meu problema está nas properties…
Tentei adicionar estas duas :
put("mail.smtp.socketFactory.port", "465");
put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
Mas continua dando erro, agora diz o seguinte: Unrecognized SSL message
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.
ah, um detalhe, se você está enviando um e-mail com SSL, você deve utilizar smtps
Não tinha jeito, mas acabei resolvendo escolhendo um email de outro servidor para servir como email padrão de envio…
Valeu pela força!