我想做的就是用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
我做错了什么?
感谢。
答案 0 :(得分:2)
我尝试运行你的代码并得到了这个:
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 :(得分:1)
不确定为什么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();
}
}
}
感谢您的建议。
答案 2 :(得分:0)
SimpleEmail类在那里,你有正确的包,所以我不得不说这是你项目的NetBeans配置中的一个问题。
由于这是一个简单的示例,您可以尝试从命令行进行编译,并以这种方式将JAR添加到类路径中。它应该工作。然后你可以弄清楚为什么它没有在NetBeans中被选中。
答案 3 :(得分:0)
您还可以将项目的源代码添加到src文件夹中。但大多数时候一个干净的&构建有助于解决这些问题。
如果没有任何帮助,关闭netbeans,手动删除构建&你项目的dist文件夹,再次启动netbeans并执行一个干净的&建立。出于一个神秘的问题帮我一次。