#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