【转载】最新邮件(mail)和OA待办事宜提醒插件(IE ToolBar)

本文介绍了一款邮件提醒插件的设计方案,该插件能在浏览器中显示来自Notes系统的最新邮件提醒。实现步骤包括创建浏览器工具栏、配置服务器信息、获取邮件信息及显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

邮件提醒插件(1)

邮件提醒插件

 

概要... 1

方案描述... 1

IE内增加一个ToolBar 2

让用户输入服务器地址和登录Notes的用户名以及口令... 2

邮件提醒插件从服务器取出最新邮件信息... 3

请求格式... 3

响应格式... 3

响应内容编码... 4

显示最新邮件信息... 4

Getnewmail函数流程... 6

Checknewmail函数流程... 6

检测到文件改变时的流程... 6

总结... 6

 

图表 1邮件提醒界面... 2

图表 2邮件提醒设置... 2

图表 3POP3协议得到最新邮件... 3

图表 4CLIENT请求SERVERURL格式... 3

图表 5 SERVER端返回的响应XML. 4

图表 6 XML特殊字符编码... 4

图表 7 转换XMLXSL. 5

图表 8 oamailmanager方法... 6

 

概要

       我们公司在给客户实施基于Notes的邮件系统,用户通过Web页面来收发邮件和其它公务处理,例如会签文件等.现在问题是,用户必须每天登录进我们的系统,才能看到新邮件.经过考虑,用户要求打开浏览器(简称IE),就能看到新邮件提醒和待办事宜提醒.

 

方案描述

       看来用户其实是需要一个IE的工具条(简称ToolBar),效果如下:

图表 1邮件提醒界面

       为了达到这个效果,需要分4:

                  1.    IE内增加一个ToolBar,用来显示邮件提醒信息

                  2.    让用户输入服务器地址和登录Notes的用户名以及口令

                  3.    邮件提醒插件从服务器取出最新邮件信息

                  4.    显示最新邮件信息

 

IE内增加一个ToolBar

       Microsoft Developer Network (MSDN) 内有一篇”Adding Explorer Bars”文章,专门讲这个问题.先做好一个COM对象,然后把这个COM对象的CLSID注册到HKLM/Software/Microsoft/Internet Explorer/Toolbar下即可.对于我们这个插件,我先做了个COM, 然后在注册表增加一个字符串键,名字是'{9928F3DE-4DD9-4bcf-ADA1-4032CCB0A219}',值是 '邮件提醒.

 

让用户输入服务器地址和登录Notes的用户名以及口令

       做好ToolBar,我在COM控件右边做了个设置按钮,点击它后,弹出一个设置界面,用户可以在这里输入服务器地址和登录Notes的用户名以及口令:

图表 2邮件提醒设置

 

邮件提醒插件从服务器取出最新邮件信息

       拿到登录服务器的用户名和口令后,现在有两种方法从服务器得到最新邮件.

       第一种方法是用标准POP3协议,连接到服务器的110端口取到数据.

telnet 10.31.172.13 110

+OK Lotus Notes POP3 server version X2.0 ready on jiteinside/jite.

user zhaowd

+OK zhaowd, your papers please.

pass *******

+OK zhaowd has 0 messages.

stat

+OK 0 0

图表 3POP3协议得到最新邮件

       用这种方式是不需要服务器端做任何工作,就可以得到最新邮件,但是不能得到待办事宜信息.

       第二种方法是服务器端在Notes上做个过滤器,记录下新邮件的信息.然后再做个返回新邮件信息的网页,客户端(简称CLIENT)向服务器端请求这个网页.

       用这个方法需要在服务器(简称SERVER)端做程序,但是灵活行强,并且满足我们的需要.因此我们就采用这种方法.当然,如何在SERVER端做程序,我就是外行了,这由我们的NOTES工程师来完成.但是下面介绍一下CLIENTSERVER发起请求的过程和数据格式.

 

邮件提醒插件(2)
请求格式

       客户端把用户名口令封装在URL内,向服务器请求信息。

假设服务器是10.31.172.13,用户名口令是zhaowdpassword,那么请求URL就是:

图表 4CLIENT请求SERVERURL格式

响应格式

SERVER返回的页面除了一些html信息外,包含一个xml文档:

<oamail>

<unreadmail>

   <发件人>张三</发件人>

   <日期>2005-01-18 16:29:16</日期>

   <大小>1920</大小>

   <主题>测试 kk</主题>

   <UNID>9ACC39C6CC52908848256F8D002EA132</UNID>

</unreadmail>

<unreadmail>

   <发件人></发件人>

   <日期>2001-01-18 16:29:16</日期>

   <大小>4440</大小>

   <主题></主题>

   <UNID>9ACD39C6CC52908848256F8D002EA132</UNID>

</unreadmail>

</oamail>

图表 5 SERVER端返回的响应XML

响应内容编码

如果XML字段如主题发件人包含xml保留字符,例如 ><, 等,服务器返回信息的时候需要编码,否则会破坏XML的完整性.

例如: 测<试> kk 被编码成 测&lt;试&gt;&nbsp;kk.

原字符

编码后

说明

&lt;

 

&gt;

 

&

&amp;

 

&quot;

双引号

&apos;

单引号

空格

&nbsp;

 图表 6 XML特殊字符编码 

显示最新邮件信息

       拿到最新邮件信息后,接下来就是显示它们了。既然拿到了XML,最简单并具有扩展性的方式是写个XSL来把XML转换成网页(简称HTML)。我就做了个简单的XSL,以后如果用户感觉显示界面不漂亮,或者服务器端程序发生变化,我只要修改这个XSL即可。

<?xml version="1.0" encoding="gb2312"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">

       <xsl:template match="oamail">

              <html>

                     <body scroll="no" lang="ZH-CN" topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0" bgcolor="#d4d0c8">

                            <xsl:if test="count(unreadmail)=0">

                                   <font color="#000000" size="2">没有新邮件</font>

                            </xsl:if>

                            <xsl:if test="count(unreadmail)>0">

                                                        <MARQUEE DIRECTION="LEFT" BEHAVIOR="SCROLL" SCROLLAMOUNT="2" SCROLLDELAY="50">

                                                        <font color="#000000" size="2">你有<xsl:value-of select="count(unreadmail)"/>封新邮件. </font>

                                                               <xsl:for-each select="unreadmail">

                                                                      <xsl:call-template name="unreadmail"/>

                                                               </xsl:for-each>

                                                        </MARQUEE>

                            </xsl:if>

                     </body>

              </html>

       </xsl:template>

       <xsl:template name="unreadmail">

              <td>

                     <font color="#000000" size="2">

发件人:<xsl:value-of select="发件人"/>

                     </font>

              </td>

              <td>

                     <font color="#000000" size="2">

主题:<xsl:value-of select="主题"/>

                     </font>

              </td>

              <td>

                     <font color="#000000" size="2">

日期:<xsl:value-of select="日期"/>

                     </font>

              </td>

              <td></td>

       </xsl:template>

</xsl:stylesheet>

图表 7 转换XMLXSL

从上面的描述可以总结出,Server提供XML格式的最新邮件列表,Client通过HTTPServer端发起请求。当Client拿到数据后,Client就用XSL转换XML并显示到网页中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值