Tomcat中JavaMail支持与冲突--Tomcat创建邮件发送环境对象Session

IT程序员开发必备-各类资源下载清单,史上最全IT资源,个人收藏总结!


程序例子:

  (1)首先在应用下的WebRoot/META-INF目录下创建名为context.xml的文件(名称不能换)


  
 如图:

 

 (2)将mail.jar包(邮件开发相关的jar文件)拷贝至Apache Software Foundation\Tomcat 6.0\lib目录下。

      注意:不要在将mail.jar包拷贝至应用工程的lib目录下,否则在执行下句会抛出java.lang.ClassCastException

    Session session = (Session) envCtx.lookup("mail/Dog");
(3)在Servlet中写邮件发送程序代码
package edu.servlet.mail;

import java.io.FileInputStream;
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.mail.internet.MimeUtility;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MailJNDIServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try{
           Context initCtx = new InitialContext();
           //tomcat将创建的环境容器放在初始化容器中,需要通过"java:comp/env"(固定)查找
           Context envCtx = (Context) initCtx.lookup("java:comp/env");
           //在环境参数容器中通过"mail/Dog"查找到Session对象
           Session session = (Session) envCtx.lookup("mail/Dog");
          
           /*
            * 验证这里tomcat的类加载器(envCtx.lookup("mail/Dog"))与应用程序的类加载器(Session)的不同
            * 但是这里不知道为什么是一样的结果,按说是不一样的,反正也不是很重要
            * 都是 org.apache.catalina.loader.StandardClassLoader
            */
           System.out.println(envCtx.lookup("mail/Dog").getClass().getClassLoader().getClass().getName());
           System.out.println(Session.class.getClassLoader().getClass().getName());
           //设置Debug的方式打印执行过程
           session.setDebug(true);
         //创建代表邮件内容的Message对象。
          Message msg = new MimeMessage(session,new FileInputStream("C:\\Documents and Settings\\Administrator\\桌面\\SendMultipartMessageDemo3.eml"));
           
          Transport transport = session.getTransport();
          transport.connect("smtp.163.com", 25, "xh216319","xiaoxiao");
          transport.sendMessage(msg, InternetAddress.parse(
             MimeUtility.encodeText("ITSTAR")+","+MimeUtility.encodeText("肖华")+""));
          response.getWriter().print("ok!");
        }catch (Exception e) {
           
        }finally{
            
        }
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
         doGet(request, response);
    }

}


相关笔记:

    (1)Tomcat中JavaMail支持与冲突

 

  



你可能感兴趣的:(邮件开发)