Boa tarde galera,
estou enviando um email via MultiPartEmail.
Quando envio pelo smtp do Gmail, ele envia que é uma beleza.
MultiPartEmail email = new MultiPartEmail();
email.setHostName("smtp.gmail.com"); // o servidor SMTP para envio do
// e-mail
email.addTo("email@gmail.com");
email.setFrom("email@gmail.com", "Gmail");
email.setSubject("Assunto");
email.setMsg("Mensagem");
email.setAuthentication("email@gmail.com","password");
email.setSmtpPort(465);
email.setSSL(true);
email.setTLS(true);
email.send();
Fiz assim para testes e funcionou perfeitamente. Envia email, com anexo qndo preciso e tudo mais.
Porém, preciso fazer este envio, pelo smtp da empresa. E não consigo trocar a SmtpPort. Entendo que por default está a 465.
MultiPartEmail email = new MultiPartEmail();
email.setHostName("smtp.blabla.net.br");
email.addTo("email@blabla.net.br");
email.setFrom("email@blabla.net.br", "email");
email.setSubject("Assunto");
email.setMsg("Mensagem");
email.setAuthentication("email@blabla.net.br,"password");
email.setSmtpPort(587);
email.setSSL(true);
email.setTLS(true);
email.attach(attachment);
email.send();
E eis que me dá este erro !
Sendo que eu setei na função email.setSmtpPort(587) a porta correta !
Alguém sabe como faço pra alterar esta porta corretamente?
Obrigado !
Sua empresa não tem nenhum firewall que libera essa porta apenas para máquinas específicas?
Creio que não pois o sistema que desenvolvemos roda em diversas máquinas. E de todas estas máquinas é possível fazer o envio de email via php.
Primeira vez que preciso fazer este envio via Java. Acredito que não há restrição de firewall não.
eu acho que a função não está setando corretamente a porta.
estou fazendo isso certo ?
Aqui eu uso assim:
[code] public void enviaEmail() {
Properties p = new Properties();
p.put(“mail.host”, “endereco_servidor_de_email”);
Session session = Session.getInstance(p, null);
MimeMessage mensagem = new MimeMessage(session);
String compras = “compras@meudominio”;
try {
mensagem.setFrom(new InternetAddress(remetente));
mensagem.addRecipient(RecipientType.TO, new InternetAddress(destinatario));
mensagem.addRecipient(RecipientType.CC, new InternetAddress(compras));
if (destinatario2 != null) {
mensagem.addRecipient(RecipientType.CC, new InternetAddress(destinatario2));
}
mensagem.setSentDate(new Date());
mensagem.setSubject(assunto, “UTF-8”);
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setHeader(“Content-Type”, “text/html; charset=ISO-8859-1; format=flowed”);
messageBodyPart.setText(corpo);
messageBodyPart.setContent(corpo, "text/html; charset=UTF-8");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
if (caminhoDoAnexo != null) {
messageBodyPart = new MimeBodyPart();
messageBodyPart.setHeader("Content-Type", "text/html; charset=ISO-8859-1; format=flowed");
DataSource source = new FileDataSource(caminhoDoAnexo); // caminho para o arquivo
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(caminhoDoAnexo); // caminho para o arquivo
multipart.addBodyPart(messageBodyPart);
}
mensagem.setContent(multipart, "UTF-8");
Transport.send(mensagem);
} catch (Exception e) {
System.out.println("controlador -> erro ao enviar mensagem! " + e.getMessage());
System.out.println("assunto:" + assunto);
System.out.println("corpo:" + corpo);
System.out.println("remetente:" + remetente);
System.out.println("destinatario:" + destinatario);
System.out.println("caminho do anexo:" + caminhoDoAnexo);
}
}
[/code]
E temos diversas restrições de firewall. Note que nem precisei setar a porta… Ah, e eu uso javax.mail.