`

在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: YuLimin@163.net</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("/"));
        }
        else
        {
            return strTemp;
        }
    }

    public String getServletInfo()
    {
        return "登录Domino服务器后直接打开用户的邮件!";
    }
}



分享到:
评论

相关推荐

    Domino获取在线用户,Domino获取BS在线用户

    通过对Domino服务器日志文件(log.nsf)的分析,也可以获取到用户登录和活动的详细信息,虽然这种方式比较繁琐,但在特定情况下是必要的。 总结来说,获取Domino中的在线用户信息是通过多种途径实现的,包括使用...

    Domino邮件日志配置

    在IT行业中,尤其是在企业级邮件系统管理中,Domino邮件日志配置是一项至关重要的任务,它可以帮助管理员跟踪和分析邮件的收发情况,确保系统的稳定运行,并为问题排查提供依据。下面将详细介绍如何进行Domino邮件...

    lotus domino 更改web端口

    Lotus Domino 是一个强大的企业级应用平台,主要用于电子邮件、协作和应用程序开发。在部署和管理 Lotus Domino 服务器时,有时需要更改其Web服务的默认端口,以满足特定的网络配置或安全需求。本文将深入探讨如何...

    domino xpages 开发 获取当前用户邮件DB

    在Domino XPages开发中,获取当前用户邮件数据库是一个常见的需求。这主要涉及到与Lotus Domino服务器交互,访问用户的数据存储以及使用 LotusScript 或 JavaScript API。以下是对标题和描述中涉及知识点的详细说明...

    Domino Web Access 字体调整

    在IT领域,尤其是在Web应用程序的定制与优化过程中,Domino Web Access (DWA) 是IBM Lotus Domino服务器提供的一种Web客户端接口,允许用户通过浏览器访问Lotus Domino应用,如电子邮件、日历和联系人等。...

    Domino Web Access (iNotes)配置实例

    配置Web自动登录界面是为了简化用户的登录流程,使用户能够更快地访问到他们的邮箱。 ##### 2.1 建立重定向数据库 1. **新建数据库** - 在客户端中,选择“文件”-&gt;“数据库”-&gt;“新建”。出现新建数据库对话框...

    Domino inotes配置.docx

    - **用户和组文档**:为用户分配Web访问权限,通常在用户或组的文档中设置。可以设置用户是否可以访问DWA,以及他们的访问级别。 **2. iNotes功能详解** - **电子邮件**:用户可以通过DWA收发邮件,查看邮件历史,...

    Domino 群集和单点登录的配置

    单点登录则让用户在一个认证之后,可以在多个应用间自由切换而无需再次登录。 #### 二、环境准备与服务器规划 **1. 域名规划** 为了确保Domino群集和单点登录的正常工作,首先需要规划好相关的域名。本文案例中,...

    lotus domino BS开发 代理获取当前文档

    3. **使用Web Query Open/Save事件**:如果是在表单中操作,可以利用Web Query Open或Web Query Save事件,这些事件会在用户打开或保存文档时自动触发,这样代理就有机会访问到当前文档。 4. **使用Web Action按钮*...

    Domino的Java编程指南

    3. **邮件客户机**:用户通过Notes或Web浏览器与Domino交互的界面。Notes客户机利用NRPC与服务器通信,而Web访问则依赖HTTP协议。 当我们谈论“Domino的Java编程”时,是指使用Java语言来操作和扩展Domino的功能。...

    domino基本命令

    禁用后,Domino将不再缓存数据库文件,而是每次请求都直接从磁盘读取。 #### 3. 数据库缓存刷新(DbcacheFlush) 此命令用于清空当前数据库缓存中的所有内容,确保缓存与实际数据库文件的数据同步。这对于解决数据...

    domino8预览

    综上所述,IBM Lotus Domino 8与Notes 8不仅在技术上实现了重大突破,还在用户体验、功能增强和企业级应用的整合方面迈出了重要步伐,为现代企业的协作和通信提供了更为先进、灵活和高效的解决方案。

    如何配制Domino for IIS

    在IT领域中,Domino for IIS是一种重要的配置方式,它允许我们在Microsoft Internet Information Services (IIS)环境中运行IBM Domino(原Lotus Notes Domino)的应用程序和服务。这对于那些既希望利用IIS提供的强大...

    ntko domino平台开发样例

    - **表单设计**:ntko可能被用来设计动态的Web表单,允许用户在线填写并保存到Domino服务器。 - **视图构建**:通过ntko,可以构建数据视图,方便用户以各种方式查看和搜索数据。 - **代理(Agent)编程**:可能...

    Domino-web开发与管理.ppt

    1. **共享信息**:Domino允许用户创建和共享文档,支持多用户协作,提供邮件和日历功能。 2. **实时工作流**:通过内置的工作流机制,Domino能够实现业务流程自动化,提高工作效率。 3. **信息存储**:Domino数据库...

    Domino开发

    在描述中提到的"这本书"可能是关于Domino开发的教程或者指南,它为想要学习或提升在Domino平台上的开发技能的人员提供了详尽的指导。IBM的Lotus Domino以其强大的数据库和应用程序框架而闻名,它允许开发者使用Notes...

Global site tag (gtag.js) - Google Analytics