天天看點

在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伺服器後直接打開使用者的郵件!";

}