[RESOLVIDO] Como revolve esse erro javax.mail.internet.ParseException: Expected parameter value, got "null"

Pessoal como esse erro no Java Email, parece que esta algo nulo, mas tentei colocar os parâmetros e quando coloco diz que o sistema não pode encontrar o arquivo.

Classe email

public class EnviarJava {

    public void envioAnexo(String nomeRemetente, String assunto, String mensagem, String destinatario, String imagem) throws UnsupportedEncodingException {
        try {
            String host = "smtp.gmail.com";
            String usuario = "";
            String senha = "";
            String remetente = "";
            
            boolean sessionDebug = true;

            Properties props = System.getProperties();            
            props.put("mail.smtp.host", host);
            props.put("mail.smtp.port", "587");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.starttls.required", "true");
            props.put("mail.smtp.ssl.trust", "smtp.gmail.com");
            props.put("mail.smtp.starttls.enable", "true");
            
             props.setProperty("mail.debug", "true");

//            jdk > 8
//            java.security.Security.addProvider(new Provider(host, remetente, senha) {
//            });

//            jdk == 8
            java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

            Session mailSession = Session.getDefaultInstance(props, null);
            mailSession.setDebug(sessionDebug);

            Message msg = new MimeMessage(mailSession);
            msg.setFrom(new InternetAddress(remetente, nomeRemetente));             msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(destinatario));
            msg.setSubject(assunto);
            msg.setSentDate(new Date());

            // cria a primeira parte da mensagem
            MimeBodyPart mbp1 = new MimeBodyPart();
            mbp1.setContent(mensagem, "text/html;charset=UTF-8");

            // cria a segunda parte da mensage
            MimeBodyPart mbp2 = new MimeBodyPart();

            // anexa o arquivo na mensagem
            FileDataSource fds = new FileDataSource(imagem);
            mbp2.setDataHandler(new DataHandler(fds));
            mbp2.setFileName(fds.getName());

            // cria a Multipart
            Multipart mp = new MimeMultipart();
            mp.addBodyPart(mbp1);
            mp.addBodyPart(mbp2);

            // adiciona a Multipart na mensagem
            msg.setContent(mp);

            // configura a data: cabecalho
            msg.setSentDate(new Date());

            // envia a mensagem
            Transport transport = mailSession.getTransport("smtp");
            transport.connect(host, usuario, senha);
            transport.sendMessage(msg, msg.getAllRecipients());
            transport.close();
            System.out.println("Enviado com Sucesso");
        } catch (MessagingException ex) {
            System.out.println(ex);
        }
    }
 }

Metodo

 JFileChooser ch = new JFileChooser();
        ch.setDialogTitle("Anexe Seu Arquivo");
        ch.setFileSelectionMode(JFileChooser.FILES_ONLY);
        FileNameExtensionFilter filter = new FileNameExtensionFilter("pdf", "pdf");

        ch.setFileFilter(filter);
        int retorno = ch.showOpenDialog(this);
 
        if (retorno == JFileChooser.APPROVE_OPTION) {

            int confirma = JOptionPane.showConfirmDialog(null, "Relatório?", "Atenção", JOptionPane.YES_NO_OPTION);
            if (confirma == JOptionPane.YES_OPTION) {

                EnviarJava e = new EnviarJava();

                File f = ch.getSelectedFile();
                TxtVisuali.setText(f.getPath());

                
                try {
                    e.envioAnexo("Alexandre Menna","Relatório", 
 // aqui que não sei que parametros passar, pois se coloco algo da erro
"Praia","alexandremenna@hotmail.com","");
                } catch (UnsupportedEncodingException ex) {
                    Logger.getLogger(OpcaoRelatorios.class.getName()).log(Level.SEVERE, null, ex);
                }
                
            }
            }

        // TODO add your handling code here:
    }

O método envio anexo pede:

envioAnexo(String nomeRemetente, String assunto, String mensagem, String destinatario, String imagem)

pra vc chamar:

e.envioAnexo("Alexandre Menna", //Nome Do Remetente
             "Relatório", //Assunto
             "Praia", //Mensagem
             "alexandremenna@hotmail.com", //Destinatário
             "" //Anexo, exemplo: "C:\\pasta\\fotos\\eu.jpg"
);

vc nao ta passando nenhum arquivo pra o anexo, por isso ta dando erro.

1 curtida

Sim, mas a pasta é o usuário que escolhe, isso que me deixa confuso, pois abre uma caixa pra escolher o arquivo

vc tem que passar o caminho escolhido pra uma variável então, tipo:

String caminho = null;

Faz o método de chamar o arquivo e no final dele vc coloca:

 caminho = file.getAbsolutePath();

E no método de envio vc faz::

e.envioAnexo("Alexandre Menna", //Nome Do Remetente
             "Relatório", //Assunto
             "Praia", //Mensagem
             "alexandremenna@hotmail.com", //Destinatário
             caminho //Anexo, exemplo: "C:\\pasta\\fotos\\eu.jpg"
);

Vc precisa passar um arquivo antes de enviar esse email, senão vai dar erro msm

1 curtida