Enviando email via MultiPartEmail (erro porta SMTP)

3 respostas
R

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 removido]");
            email.setFrom("[email removido]", "Gmail");
            email.setSubject("Assunto");
            email.setMsg("Mensagem");

            email.setAuthentication("[email removido]","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 removido]");
            email.setFrom("[email removido]", "email");
            email.setSubject("Assunto");
            email.setMsg("Mensagem");

            email.setAuthentication("[email removido],"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 !

3 Respostas

R

Sua empresa não tem nenhum firewall que libera essa porta apenas para máquinas específicas?

R

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 ?

R

Aqui eu uso assim:

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);
        }
    }

E temos diversas restrições de firewall. Note que nem precisei setar a porta... Ah, e eu uso javax.mail.

Criado 30 de setembro de 2013
Ultima resposta 30 de set. de 2013
Respostas 3
Participantes 2