1. 程式人生 > >JavaMail java郵件開發_Tomcat的JavaMail_JNDI資源與類載入問題

JavaMail java郵件開發_Tomcat的JavaMail_JNDI資源與類載入問題

 

 

 

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,導包的地方報錯,,,求指點............