发送给Email.java
package helper;
//Mail.java - smtp sending starttls (ssl) authentication enabled
//1.Open a new Java class in netbeans (default package of the project) and name it as "Mail.java"
//2.Copy paste the entire code below and save it.
//3.Right click on the file name in the left side panel and click "compile" then click "Run"
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
public class sendToEmail
{
String d_email = "sample@gmail.com",
d_password = "mysamplepassword",
d_host = "smtp.gmail.com",
d_port = "465",
//m_to = "sample@yahoo.com",
m_subject = "trial",
m_text = "Hey, this is the testing email.";
public sendToEmail(String strEmailAddress)
{
Properties props = new Properties();
props.put("mail.smtp.user", d_email);
props.put("mail.smtp.host", d_host);
props.put("mail.smtp.port", d_port);
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.auth", "true");
//props.put("mail.smtp.debug", "true");
props.put("mail.smtp.socketFactory.port", d_port);
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
SecurityManager security = System.getSecurityManager();
try
{
Authenticator auth = new SMTPAuthenticator();
Session session = Session.getInstance(props, auth);
//session.setDebug(true);
MimeMessage msg = new MimeMessage(session);
msg.setText(m_text);
msg.setSubject(m_subject);
msg.setFrom(new InternetAddress(d_email));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(strEmailAddress));
Transport.send(msg);
}
catch (Exception mex)
{
mex.printStackTrace();
}
}
public class SMTPAuthenticator extends javax.mail.Authenticator
{
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(d_email, d_password);
}
}
}
我的 controller.java部分
/* Send to Email will run properly soon */
sendToEmail email = new sendToEmail(strEmailAddress);
当我运行我的web应用程序时,我收到一条错误消息,上面写着:
类型异常报告 消息 服务器遇到一个内部错误(),无法完成此请求。 异常javax.servlet.ServletException: Servlet执行引发异常 根本原因: javax/mail/Authenticator controller.RegisterTenantController.doPost(RegisterTenantController.java:108) javax.servlet.http.HttpServlet.service(HttpServlet.java:709) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
我现在该怎么办?有人能帮我把这个网络应用程序成功吗?
发布于 2009-10-27 11:09:29
您需要向webapp / lib目录或webapp(或服务器的lib目录)添加两个jars:
发布于 2009-10-27 16:08:43
虽然这可能是因为您的类路径中缺少一个jar文件,但它可能不是。
在这种情况下,在我们头脑中保留两、三个不同的例外海峡是很重要的:
java.lang.ClassNotFoundException
此异常表示类未在类路径上找到。这表明我们试图加载类定义,类路径上不存在类。java.lang.NoClassDefFoundError
此异常表示JVM在其内部类定义数据结构中查找类的定义,但没有找到它。这与说它不能从类路径加载是不同的。通常情况下,这表明我们以前试图从类路径加载类,但由于某种原因它失败了--现在我们再次尝试,但是我们甚至不会尝试加载它,因为我们在前面加载它失败了。早期的故障可能是ClassNotFoundException
或ExceptionInInitializerError
(指示静态初始化块中的故障)或任何其他问题。关键是,NoClassDefFoundError
不一定是类路径问题。我会查看javax.mail.Authenticator
的源代码,看看它在它的静态初始化程序中做了什么。(查看静态变量初始化和静态块(如果存在的话)。如果您没有在ClassNotFoundException
之前获得NoClassDefFoundError
,那么几乎可以保证它是一个静态初始化问题。
当主机文件错误地定义本地主机地址和静态初始化块依赖于InetAddress.getLocalHost()
时,我经常看到类似的错误。0.0.1应该指向“localhost”(可能还有localhost.localdomain)。它不应该指向机器的实际主机名(尽管由于某种原因,许多老的RedHat Linux安装程序喜欢错误地设置它)。
发布于 2012-08-13 23:29:53
向maven依赖项添加以下内容
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.5</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
https://stackoverflow.com/questions/1630002
复制相似问题