отправка изображения по почте без сохранения его в java - PullRequest
0 голосов
/ 16 июня 2020

Салам, у меня есть приложение, которое генерирует табуляцию времени в панели сетки, и я мог бы превратить сетку в изображение, чтобы распечатать его, но теперь я хочу отправить это изображение по электронной почте, но я не могу найти способ видели похожие темы, но они отправляют изображение, существующее на компьютере, по его пути, но в моем случае я не хочу сохранять изображение, я просто хочу отправить его напрямую с помощью java class Image или ImageView Вот мой код

 @FXML
    void send_mail(ActionEvent event) throws IOException {

        final String username = "******@gmail.com";
        final String password = "******";

        Properties props = new Properties();
        props.put("mail.smtp.auth", true);
        props.put("mail.smtp.starttls.enable", true);
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587");

        javax.mail.Session session = javax.mail.Session.getInstance(props,
                new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });

        try {

            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(username));
            message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse("*****@yahoo.com"));
            message.setSubject("Testing Subject");
            message.setText("PFA");

            MimeBodyPart messageBodyPart = new MimeBodyPart();

            Multipart multipart = new MimeMultipart();

            messageBodyPart = new MimeBodyPart();
            messageBodyPart.setContent(image, "IMAGEVIEW");
            // String file = "../emploi/"+fileName;
            messageBodyPart.setText("Emploi de temps");
            //DataSource source = new FileDataSource(file);
            //  messageBodyPart.setDataHandler(new DataHandler((DataSource) file));

            // messageBodyPart.attachFile(file);
            messageBodyPart.setFileName("Emploi de temps");

            multipart.addBodyPart(messageBodyPart);
            MimeBodyPart photoBodyPart = new MimeBodyPart();        

            photoBodyPart = new MimeBodyPart();
            photoBodyPart.setContent(image, "IMAGEVIEW");
            multipart.addBodyPart(photoBodyPart);

            message.setContent(multipart);

            System.out.println("Sending");

            Transport.send(message);

            System.out.println("Done");

        } catch (MessagingException e) {
            e.printStackTrace();
        }

    }

, но я получаю эту ошибку

javax.mail.inte rnet .ParseException: в строке Content-Type ожидаемый '/' получил null в javax.mail.inte rnet .ContentType. (ContentType. java: 104) в javax.mail.inte rnet .MimeBodyPart.updateHeaders (MimeBodyPart. java: 1510) в javax.mail.inte rnet .MimeBodyPart.updateHeaders (MimeBody . java: 1172) в javax.mail.inte rnet .MimeMultipart.updateHeaders (MimeMultipart. java: 522) в javax.mail.inte rnet .MimeBodyPart.updateHeaders (MimeBodyPart. java: 1533 ) в javax.mail.inte rnet .MimeMessage.updateHeaders (MimeMessage. * 1 022 *: 2271) в javax.mail.inte rnet .MimeMessage.saveChanges (MimeMessage. java: 2231) в javax.mail.Transport.send (Transport. java: 123)

...