天天看点

在Web上登录Domino后直接打开用户的邮件

/**

 * <p>title: mailredirectservlet</p>

 * <p>description: 登录domino服务器后直接打开用户的邮件!</p>

 * <p>前提domino配置成支持servelt,</p>

 * <p>打开names.nsf,配置,服务器文档,internet协议,domino web引擎,java 服务器小程序,选择:domino 服务器小程序管理器</p>

 * <p>保存后重启domino</p>

 * <p>把这个编译后的.class文件放到%domnio%/data/domino/servlet目录下面</p>

 * <p>然后通过http://%server%/servlet/mailredirectservlet访问即可</p>

 * <p>copyright: copyright (c) 2001 - 2004</p>

 * <p>company: beyond daybreak office</p>

 * <p>homepage: http://202.101.111.1/123</p>

 * <p>e-mail: [email protected]</p>

 * @author yulimin

 * @version 1.0

 */

//package net.echochina.oa;

import java.io.ioexception;

import javax.servlet.servletexception;

import javax.servlet.servletoutputstream;

import javax.servlet.http.httpservlet;

import javax.servlet.http.httpservletrequest;

import javax.servlet.http.httpservletresponse;

import lotus.domino.document;

import lotus.domino.notesexception;

import lotus.domino.notesfactory;

import lotus.domino.notesthread;

import lotus.domino.session;

import lotus.domino.view;

public class mailredirectservlet extends httpservlet

{

    final static string db_names = "names.nsf";

    public mailredirectservlet()

    {

    }

    public void init() throws servletexception

    public void destroy()

    public void doget(httpservletrequest request,httpservletresponse response) throws servletexception,ioexception

        dopost(request,response);

    public void dopost(httpservletrequest request,httpservletresponse response) throws servletexception,ioexception

        string strfullname = request.getremoteuser();

        string strmailfile = "";

        response.setcontenttype("text/html; charset=gb2312");

        servletoutputstream out = response.getoutputstream();

        out.println("直接打开登录用户的邮件开始!<p>");

        out.println("登录的用户名为:" + strfullname + "<p>");

        if(strfullname == null || strfullname.equalsignorecase("anonymous"))

        {

            out.println("没有登录到domino服务器!<p>");

            out.println("<script>document.location='/names.nsf?login&redirectto=/servlet/mailredirectservlet';</script>");

        }

        else

            notesthread.sinitthread();

            session session = null;

            view view = null;

            document doc = null;

            try

            {

                session = notesfactory.createsession();

                view = session.getdatabase(session.getservername(),db_names).getview("people");

                doc = view.getdocumentbykey(getshortname(strfullname));

                if(doc != null)

                {

                    strmailfile = doc.getitemvaluestring("mailfile");

                    strmailfile = strmailfile.replace('//','/');

                    if(!strmailfile.tolowercase().endswith(".nsf"))

                    {

                        strmailfile += ".nsf";

                    }

                    out.println(strfullname + "用户的邮件为:" + strmailfile + "<p>");

                    string strmailurl = request.getscheme() + "://" + request.getservername();

                    int strserverport = request.getserverport();

                    if(strserverport != 80)

                        strmailurl += ":" + strserverport;

                    strmailurl += "/" + strmailfile;

                    out.println("邮件地址为:" + strmailurl + "<p>");

                    out.println("<script>");

                    //out.println("alert('开始进入邮件')");

                    out.println("document.location='" + strmailurl + "'");

                    out.println("</script>");

                    //response.sendredirect(strmailurl);

                    //response.encoderedirecturl(strmailurl)

                }

                else

                    out.println("找不到 " + strfullname + " 的邮件文件!<p>");

            }

            catch(notesexception e)

                out.println(e.tostring() + "<p>");

                e.printstacktrace();

                system.out.println(e.id + " " + e.text);

            finally

                try

                    if(doc != null)

                        doc.recycle();

                        doc = null;

                    if(view != null)

                        view.recycle();

                        view = null;

                    if(session != null)

                        session.recycle();

                        session = null;

                catch(exception e)

                    e.printstacktrace();

                notesthread.stermthread();

        out.close();

    //取用户的短名!

    private string getshortname(string strtemp)

        if(strtemp.indexof("cn=") >= 0 && strtemp.indexof("/") >= 0)

            return strtemp.substring(3,strtemp.indexof("/"));

            return strtemp;

    public string getservletinfo()

        return "登录domino服务器后直接打开用户的邮件!";

}