Como pegar o caminho do ireport e enviar por email?

Pessoal posso usar o exemplo do attachment.setPath(“mypictures/john.jpg”) pegar o caminho da imagem, em vez do caminho do exemplo, pegar o caminho do relatório do Ireport, posso pegar Ex ( c/ireport/relatorios), pois quero que o sistema, ao salvar no banco com o botão salvar, ele através do evento do botão?

Tá um pouco confuso sua questão, explica melhor por favor

1 curtida

Não expliquei bem, quero pegar o caminho do relatório do ireport que é c/documentos, esse caminho será que posso usar no attachment.setPath(“mypictures/john.jpg”) no Java email, será que vai funcionar, pois quero enviar email automático pro responsável ao salvar no banco, com o botão salvar, que vem do método salvar

vc exportou seu relatório pra uma imagem? Mas sim, vc consegue passar o relatório gerado por email com o caminho absoluto.

C:/Relatórios/Seu Arquivo.extensao

Fiz assim, mas ainda da errado.
identar texto pré-formatado por 4 espaços
Classe Java do Emai
public class EnviarJava {

public  static void enviarEmail(String caminho, String descri, String nome) {
    MultiPartEmail email = new MultiPartEmail();
    email.setHostName("smtp.googlemail.com");
    email.setSslSmtpPort("465");
    email.setStartTLSRequired(true);
   email.setStartTLSEnabled(true);
   email.setSSLOnConnect(true);
    
    email.setAuthenticator(new DefaultAuthenticator("henri199@gmail.com", "senhaXX"));
    try {           
        email.setFrom("henri199@gmail.com");
        email.setSubject("teste");
        email.setMsg("teste mensagem");             
        email.addTo("alexandremenna@hotmail.com");

        email.setDebug(true);
        
        EmailAttachment anexo = new EmailAttachment();
        anexo.setPath(caminho);           
        anexo.setDisposition(EmailAttachment.ATTACHMENT);
        anexo.setDescription(descri);
        anexo.setName(nome);
        email.setDebug(true);
        //email.attach(anexo);
        //email.addTo(to); 
        //email.addReplyTo(to);
        email.send();
    } catch (EmailException ex) {
        Logger.getLogger(EnviarJava.class.getName()).log(Level.SEVERE, null, ex);
    }
}

Botão salvar

}
identar texto pré-formatado por 4 espaços

private void BotaoSalvarActionPerformed(java.awt.event.ActionEvent evt) {

    // TODO add your handling code here:
    
     EmitirAcampamento();
   
       EnviarJava.enviarEmail(arqui.getAbsolutePath(), arqui.getName(), arqui.getPath());
    
   

     
  
    
   
}                                           

private void CalcularActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    CalcularAC();
}

Cara, nao bota sua senha aqui, vou editar e ja respondo.

O que ta dando errado? Ta dando erro?

valeu, nem tinha visto kk. o Erro é esse xception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at br.com.sistemaPraia.telas.TelaAcampar.BotaoSalvarActionPerformed(TelaAcampar.java:484)
at br.com.sistemaPraia.telas.TelaAcampar.access$900(TelaAcampar.java:27)
at br.com.sistemaPraia.telas.TelaAcampar$10.actionPerformed(TelaAcampar.java:378)

Qual é a linha 484?

1 curtida

EnviarJava.enviarEmail(arqui.getAbsolutePath(), arqui.getName(), arqui.getPath());

Esse arqui vem de onde? ta vazio

ai que esta, agora vc chegou no ponto que eu queria, como resolver isso.

identar texto pré-formatado por 4 espaços

public static void enviarEmail(String caminho, String descri, String nome) {
MultiPartEmail email = new MultiPartEmail();
email.setHostName(“smtp.googlemail.com”);
email.setSslSmtpPort(“465”);
email.setStartTLSRequired(true);
email.setStartTLSEnabled(true);
email.setSSLOnConnect(true);

    email.setAuthenticator(new DefaultAuthenticator("henri199@gmail.com", "senha "));
    try {           
        email.setFrom("henri199@gmail.com");
        email.setSubject("teste");
        email.setMsg("teste mensagem");             
        email.addTo("alexandremenna@hotmail.com");

        email.setDebug(true);
        
        EmailAttachment anexo = new EmailAttachment();
        anexo.setPath(caminho);           
        anexo.setDisposition(EmailAttachment.ATTACHMENT);
        anexo.setDescription(descri);
        anexo.setName(nome);
        email.setDebug(true);
        //email.attach(anexo);
        //email.addTo(to); 
        //email.addReplyTo(to);
        email.send();
    } catch (EmailException ex) {
        Logger.getLogger(EnviarJava.class.getName()).log(Level.SEVERE, null, ex);
    }
}

qual api vc ta usando? javamail?

isso javaEmail

Faz assim (a string imagem pode ser o caminho de um arquivo):

public void envioAnexo(String nomeRemetente, String assunto, String mensagem, String destinatario, String imagem) {
        try {
            String host = "smtp.gmail.com";
            String usuario = "xxxx@gmail.com";
            String senha = "xxxx";
            String remetente = "xxxx@gmail.com";

            boolean sessionDebug = false;

            Properties props = System.getProperties();
            props.put("mail.smtp.starttls.enable", "true");
            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");

//            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) {
            ex.printStackTrace();
        } catch (UnsupportedEncodingException ex) {
            ex.printStackTrace();
        }
    }

pra chamar esse código vc faz:

envioAnexo(
    "Fulano", //Nome do Remetente
    "JavaMail Code", //Asunto
    "Abner mandou esse código",  //Mensagem
    "fulano@gmail.com", //Email do destinatário
    "c:\\caminho\\teste.pdf" //arquivo
);

mano sinceramente e com todo respeito eu te amo, so deu um erro javax.mail.AuthenticationFailedException

manda o erro completo

DEBUG SMTP: trying to connect to host “smtp.gmail.com”, port 25, isSSL false

mano, o erro completo

Texto pré-formatado
EBUG: setDebug: JavaMail version 1.4ea
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth false
DEBUG SMTP: trying to connect to host “smtp.gmail.com”, port 25, isSSL false
javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 25;
nested exception is:
java.net.SocketException: Permission denied: connect
DEBUG: setDebug: JavaMail version 1.4ea
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth false
DEBUG SMTP: trying to connect to host “smtp.gmail.com”, port 25, isSSL false
javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 25;
nested exception is:
java.net.SocketException: Permission denied: connect

mostra como vc colocou o seu codigo, e vê se tem algum tipo de software bloqueando o acesso do Java, (anti virus, firewall)

1 curtida