JavaMail java郵件開發_Tomcat的JavaMail_JNDI資源與類載入問題
阿新 • • 發佈:2018-12-21
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("
[email protected]")); InternetAddress to[] = new InternetAddress[1]; //收件人 //to[0] = new InternetAddress(request.getPaeameter("to")); to[0] = new InternetAddress("[email protected]"); 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,導包的地方報錯,,,求指點............