Почему я получаю это исключение, когда создаю экземпляр класса SimpleEmail в Java? - PullRequest
2 голосов
/ 27 июля 2011

Все, что я хочу сделать, это отправить электронное письмо на Java. Вот пример, который я нашел:

import org.apache.commons.mail.SimpleEmail;

public class Email {

    public static void sendMessage(String emailaddress, String subject, String body) {
        try {
            SimpleEmail email = new SimpleEmail();
            email.setHostName("valid ip address here");
            email.addTo(emailaddress);
            email.setFrom("noreply@example.com", "No reply");
            email.setSubject(subject);
            email.setMsg(body);
            email.send();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

Я сразу получаю следующее исключение в строке SimpleEmail email = new SimpleEmail();:

java.lang.ClassNotFoundException: org.apache.commons.mail.SimpleEmail

У меня есть следующий JAR в моем проекте (с использованием Netbeans): commons-email-1.2.jar

Что я делаю не так?

Спасибо.

Ответы [ 4 ]

2 голосов
/ 27 июля 2011

Я попытался запустить ваш код и получил это:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Message
    at javaapplication3.Email.sendMessage(Email.java:9)
    at javaapplication3.JavaApplication3.main(JavaApplication3.java:7)
Caused by: java.lang.ClassNotFoundException: javax.mail.Message
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 2 more
Java Result: 1`

Появляется, что некоторый импорт отсутствует. Вам нужен пакет javax.mail для запуска вашего кода.

1 голос
/ 27 июля 2011

Не уверен, почему SimpleEmail не работает.Но это так:

import javax.mail.*;
  import javax.mail.internet.*;

  import java.util.Properties;

  public class Email {

     public static void sendMessage(String emailaddress, String subject, String body) {
        try {
           Properties props = new Properties();
           props.setProperty("mail.transport.protocol", "smtp");
           props.setProperty("mail.host", "myhost");

           Session mailSession = Session.getDefaultInstance(props, null);
           Transport transport = mailSession.getTransport();

           MimeMessage message = new MimeMessage(mailSession);
           message.setSubject("Testing javamail plain");
           message.setContent("This is a test", "text/plain");
           message.addRecipient(Message.RecipientType.TO, new InternetAddress("test@example.com"));

           transport.connect();
           transport.sendMessage(message,
                   message.getRecipients(Message.RecipientType.TO));
           transport.close();
        } catch (Exception ex) {
           ex.printStackTrace();
        }
     }
  }

Спасибо за предложения.

0 голосов
/ 27 июля 2011

Вы также можете добавить исходный код проекта в вашу папку src.Но в большинстве случаев чистота и сборка помогают с этими проблемами.

Если ничего не помогает, закройте netbeans, вручную удалите папку build & dist вашего проекта, снова запустите netbeans и выполните чистую сборку.Помогла мне однажды из загадочной проблемы.

0 голосов
/ 27 июля 2011

Класс SimpleEmail находится там, и у вас есть правильный пакет, поэтому я должен сказать, что это проблема в конфигурации NetBeans для вашего проекта.

Поскольку это простой пример, вы можетепопробуйте скомпилировать из командной строки и таким образом добавить JAR в ваш путь к классам.Он должен работать.Затем вы можете понять, почему его не обнаруживают в NetBeans.

...