JNDI:https://baike.baidu.com/item/JNDI
在META-INF下创建context.xml文件:
<Context>
<Resource name="mail/session" auth="Container" type="javax.mail.Session"
mail.stmp.host="smtp.sina.com" mail.stmp.auth="true" mail.transport.protocol="stmp"/>
</Context>
SendMailServlet:
package com.yuming.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import com.yuming.test.JavaMail02;
/**
* Servlet implementation class SendMailServlet
*/
public class SendMailServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
//JavaMail02.main(new String[]{});
//获得session对象
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
Session session = (Session) envCtx.lookup("mail/session");
Message message = new MimeMessage(session);
//收件人
//message.setFrom(new InternetAddress(request.getParameter("from"));
message.setFrom(new InternetAddress("itcast_test@sina.com"));
InternetAddress to[] = new InternetAddress[1];
//收件人
//to[0] = new InternetAddress(request.getPaeameter("to"));
to[0] = new InternetAddress("itcast_test@sina.com");
message.setRecipients(Message.RecipientType.TO, to);
//主题
//message.setSubject(request.getParameter("subject"));
message.setSubject("haha");
//内容 是一段文本
//message.setContent(request.getParameter("content"),"text/plain");
message.setText("test");
//Transport.send(message);
//用户名 密码
Transport transport = session.getTransport();
//transport.connect(host, username, password);
transport.connect("smtp.sina.com", "itcast_test", "123456");
//发邮件
transport.sendMessage(message, to);
transport.close();
response.getWriter().print("ok!!!");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace(response.getWriter());
}
}
}
需要去掉mail.jar,否则,会报错.session 找不到 session
报错信息:
原因:有两个session,一个是servlet中的session(servlet类加载器加载的session),一个是tomcat的session(tomcat类加载器加载的session.lib下的mail.jar)
但是,我去掉lib下的mail.jar,导包的地方报错,,,求指点............