Как решить ‘java.lang.ExceptionInInitializerError’ в Java Email API

#java

#java

Вопрос:

Я пытаюсь отправить электронное письмо с вложением на Java. Каждый раз, когда я запускаю файл, я получаю «java.lang.Ошибка ExceptionInInitializerError «. Прикрепленный файл jar называется «javax.mail». . Кто-нибудь знает, почему и как я могу это решить?

 public class JavaEmailAttach {

static Properties mailServerProperties;
static Session getMailSession;
static MimeMessage msg;

public static void main(String args[]) throws AddressException, MessagingException {


    final String sourceEmail = "malikee4u@gmail.com"; // Gmail id
    final String password = "xxxxxxxxx"; 
    final String toEmail = "xxxxxx@yahoo.com"; //destination email id

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


    Authenticator authentication = new Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(sourceEmail, password);
        }
    };
    Session session = Session.getInstance(props, authentication);
    generateAndSendEmail(
            session,
            toEmail,
            "JavaMail API example with Image Attachment",
            "Test email with attachment. Please find here attached Image.");

}

public static void generateAndSendEmail(Session session, String toEmail, String subject,
        String body) {
    try {
        System.out.println("generateAndSendEmail() starts..");

        MimeMessage mimeMessage = new MimeMessage(session);
        mimeMessage.addHeader("Content-type", "text/HTML; charset=UTF-8");
        mimeMessage.addHeader("format", "flowed");
        mimeMessage.addHeader("Content-Transfer-Encoding", "8bit");

        mimeMessage.setFrom(new InternetAddress("malike4u@gmail.com",
                "NoReply"));
        mimeMessage.setReplyTo(InternetAddress.parse("malike4u@gmail.com", false));
        mimeMessage.setSubject(subject, "UTF-8");
        mimeMessage.setSentDate(new Date());
        mimeMessage.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse(toEmail, false));


        BodyPart messageBodyPart = new MimeBodyPart();
        messageBodyPart.setContent(body, "text/html");

        Multipart multipart = new MimeMultipart();


        multipart.addBodyPart(messageBodyPart);

        messageBodyPart = new MimeBodyPart();


        String filename = "E:/Malik/PDF REPORT/images/RED.jpg";
        DataSource source = new FileDataSource(filename);
        messageBodyPart.setDataHandler(new DataHandler(source));
        messageBodyPart.setFileName(filename);


         multipart.addBodyPart(messageBodyPart);


        messageBodyPart = new MimeBodyPart();
        messageBodyPart.setContent("<br><h3>Find below attached image</h3>"
                  "<img src='cid:image_id'>", "text/html");
        multipart.addBodyPart(messageBodyPart);
        mimeMessage.setContent(multipart);

        System.out.println("Finally Send message..");


        Transport.send(mimeMessage);



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

  }
 

Комментарии:

1. Я думаю, было бы лучше опубликовать полную трассировку стека исключений.

2. Из какого класса вы получаете исключение?

3. Вызвано: java.lang. Исключение SecurityException: не удается инициализировать криптографический механизм в javax.crypto.JceSecurity. <clinit> (JceSecurity.java:86) … еще 20