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

原创 2003年08月13日 10:27:00

/**
 * <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代理发送邮件,对方收到发件人都是admin,怎么设置指定发件人呢?亲自写了段代码,发现是可行的。...
  • Gavid0124
  • Gavid0124
  • 2014年07月11日 14:31
  • 1509

修改domino邮箱归属用户

【背景】          今天一朋友问我,一个用户的名字注册错了,重新注册了一个新的账号,怎么把以前的邮箱跟新账号关联起来。 【处理步骤】 将新用户添加到原邮箱数据库的ACL中,并设置成...
  • Gavid0124
  • Gavid0124
  • 2014年07月18日 12:15
  • 1069

采用dsapi开发domino登录认证

dsapi开发domino登录认证的资料十分少,但是官方的资料讲解的很详细,要编写dsapi程序看官网的介绍十分必要,但是官网的资料仅仅提供了一个简单的登录demo的示例,复杂的功能还需要自己配合ap...
  • fengshuiyue
  • fengshuiyue
  • 2016年12月04日 01:50
  • 1281

domino判断用户是否已经在web端登陆的方法

今天一朋友问,怎么判断用户是否已经在web端登录了。 可以在domino端控制台输入以下方式来获取: show inetusers -xml>保存XML的路径,然后解析xml...
  • Gavid0124
  • Gavid0124
  • 2015年01月13日 11:30
  • 1012

domino解决删除用户后还存在邮件数据库问题

由于最近发现有不少用户已经删除了,但邮箱数据还存在,domino每次启动时,都显示大一堆找不到用户的错误,在ibm找过解决问题,我们问题就是邮箱数据库存在,用户已经删除了。要解决就要把多余的邮箱删除。...
  • weijia3624
  • weijia3624
  • 2015年09月06日 10:56
  • 1449

诊断并解决 IBMLotusDomino8 邮件路由问题

诊断并解决 IBMLotusDomino8 邮件路由问题             简介 IBM Lotus Domino 是一个广泛使用的消息系统,根据客户的报告,它最常见的问题是邮件...
  • Gavid0124
  • Gavid0124
  • 2015年01月29日 08:48
  • 2007

网上总结的Domino常见问题

Q:数据库的文档时常出现复制与保存冲突,如何解决?   A:"复制与保存冲突"是由于同时有两个或两个以上用户对同一文档进行修改,或者是多个用户对同一文档的不同副本进行修改,复制时就会造成复制冲突。对...
  • szheng1989
  • szheng1989
  • 2011年11月13日 21:05
  • 4099

Domino web应用突然访问慢的问题排查方法

【背景】 近日,接到一个项目组反馈OA连续几天突然页面显示很慢,特别是高峰期(早高峰、午休后),慢的用户登录OA页面后,上了次洗手间回来,页面还没装载出来,这种蜗牛般的速度,换咱们是用户也难以接受啊...
  • Gavid0124
  • Gavid0124
  • 2014年07月09日 15:52
  • 1530

domino整体迁移办法

此法也使用于domino服务器重装windows的情况,但前提是程序和数据目录均不在C盘。 1、先将本机计算机名称改为之前domino正常运行时的计算机名称,在此架设为domino01,在C盘host...
  • jackygits
  • jackygits
  • 2011年04月28日 10:19
  • 1525

比较全的Domino常用服务器命令(包括邮件替换)

Show Inetusers: 展示当前服务器在线人数 tell amgr run "highcomoa/application/udf_fwgl.nsf" 'agent_sh' :通过命令直接在服...
  • szheng1989
  • szheng1989
  • 2011年11月13日 21:54
  • 4444
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在Web上登录Domino后直接打开用户的邮件
举报原因:
原因补充:

(最多只允许输入30个字)