DBMail与OA办公系统的接口指导

 1、页面嵌入DBMail Webmail登录框

  假设Webmail的网址是http://www.com/mail,如果在页面上要嵌入DBMail Webmail的登录框,可以在页面上加入如下的代码:

  <form action=http://xxx.com/mail method=post>
  完整帐号: <input type=text name="fm_strAccount">
  输入密码: <input type=password name="fm_strPassword">
  <input type=submit value='登录Webmail'>
  </form>

 2、OA办公系统修改密码后同步到DBMail

  假设Webmail的网址是http://www.com/mail,当用户在OA办公系统中修改了密码以后,可以通过password.asp同步密码到DBMail中,同步密码的方式有GET和POST两种方式。

   2.1 GET方式同步密码

  http://xxx.com/mail/password.asp?acc=ACCOUT&pwd=NEW_PASSWORD&old=OLD_PASSWORD&jump=1&url=URL

  password.asp从URL参数中读取新旧密码,当旧密码检验正确以后才会修改为新密码。在修改之后,可以跳转至指定的页面。注意,如果密码中包含有特殊字符,例如&/?等字符,则要进行URL编码。


参数 示例 说明
acc

xxxx@test.com

完整的账号
pwd 654321

新的密码,注意特殊字符要进行URL编码

old 123456 旧的密码,注意特殊字符要进行URL编码
jump 0或1 修改之后是否要进行叶面跳转,缺省为1
url

login.asp

修改之后要跳转的目标页面,可以为空

   2.2 POST方式同步密码

  http://xxx.com/mail/password.asp?jump=1

  以POST方式同步密码所实现的功能与GET方式一样,但是通过POST方式向password.asp传过来4个字段:fm_strAccount, fm_strPassword, fm_strOldPassword, fm_strGoBack。


参数 示例 说明
fm_strAccount xxxx@test.com 完整的帐号
fm_strPassword 654321 新的密码
fm_strOldPassword 123456 旧的密码
fm_strGoBank login.asp 修改之后要跳转的目标页面,可以为空

 3、从OA办公系统直接进入Webmail

  假设Webmail的网址是http://www.com/mail,如果需要在OA办公系统中增加一个链接,让用户点击这个链接以后直接进入Webmail,而不需要重复地输入帐号和密码再次登录,可以向login.asp以GET方式或者POST方式传递帐号和密码进行跳转。

   3.1 以GET方式跳至Webmail

  http://xxx.com/mail/login.asp?acc=ACCOUNT&pwd=PASSWORD&go=X

  由于URL地址中包含明文的密码会在地址栏以明文方式显示,因此这种GET跳转方式有密码泄露的隐患。如果一定要用GET方式跳转,建议先将密码以MD5方式加密码一下。


参数 示例 说明
acc xxxx@test.com 完整的帐号
pwd 654321 密明文或MD5(密码),注意特殊字符要进行URL编码
go 0/1/4 0=邮箱汇总(缺省),1=邮件列表,4=写新邮件

   3.2 以POST方式跳至Webmail

  http://xxx.com/login.asp?go=X

  将这个链接的onClick点击事件以 javascript转换为POST操作,向login.asp传过来两个字段:fm_strAccount和 fm_strPassword。


参数 示例 说明
fm_strAccount xxxx@test.com 完整的帐号
fm_strPassword 654321 密明文或MD5(密码),注意特殊字符要进行URL编码
go 0/1/4 0=邮箱汇总(缺省),1=邮件列表。4=写新邮件

 4、获知帐号是否有新邮件

  DBMail的邮件信息都存放数据库中,因此OA办公系统可以直接访问数据库来获知帐号是否有邮件,下面对此提供详细的指导。

   4.1 DBMail的数据库连接参数

  DBMail的数据库连接参数保存在c:\DBMail\data\mailserver.ini的[Database]段中,OA系统可以直接访问mailserver.ini获取DBMail的数据库连接参数。


参数 说明
DataSource=xxx\SQLExpress SQL Server数据源
DatabaseName=sqlmail DBMail数据库名称,缺省为sqlmail
AuthSSPI=1 验证方式,0=帐号+密码,1=Windows集成方式
Userld=sa 帐号
Password=12345678 密码

   4.2 获取帐号的邮件信息

  DBMail的数据库,为每一个帐号单独创建了一个表,来保存邮件信息,因此获取帐号的邮件信息要经历两步,第一步得到帐号的序号属性(accseqno,帐号序号),第二步访问对应的邮件信息表(表名格式为XNNNNNNmail,其中NNNNN是6位序号)。

  具体操作如下:

  1.得到帐号的序号: select accseqno from ldap where account='xxxx@xxx.com',假设由此得到的accseqno=3。

  2.得到邮件的总数:select count(*) from X000003mail where account='xxx@xxx.com'。

  3.得到新邮件数量:select count(*) from X000003mail where account='xxx@xxx.com' and isread=0.

 5、直接写数据库记录发邮件

  可以直接向websent表写入一条记录,来实现直接发送邮件的功能。

   5.1 DBMail的数据库连接参数

  DBMail的数据库连接参数保存在c:\DBMail\data\mailserver.ini的[Database]段,OA系统可以直接访问mailserver.ini获取DBMail的数据库连接参数。


参数 说明

DataSource=xxx\SQLExpress

SQLServer数据源

DatabaseName=sqlmail

DBMail数据库名称,缺省为sqlmail

AuthSSPI=1

验证方式,0=帐号+密码,1=Windows集成方式

UserId=sa

帐号

Password=12345678

密码

   5.2 写websent记录直接发邮件

  DBMail的待发邮件存储在websent表中,一条记录代表一封待处理的待发邮件(或者其它交互通知信息)。OA邮件系统写入一条适当取值的websent记录到数据库中,DBMail就会读入这条记录然并且执行邮件编码以及发送处理。

  websent具体记录取值说明,请见下表所示。MailId为邮件的唯一ID,DBMail的邮件ID格式为YYYYMMDD+NNNNNNNN, 即年月日+8位序号,推荐此处的邮件ID将前两位改为“AA”,即AAYYMMDD+NNNNNNNN位序号,从而保证不重复。

   WebSent取值说明表


字段 名称 类型 取值说明
Mailld 邮件ID

Varchar[16]

主键,例如AA120101NNNNNN

Account

帐号

Varchar[255]  

必须完整格式,例如xx@123.com

Manager

经理帐号

Varchar[255]

IPaddress

IP地址 Varchar[64]

MailSize

邮件大小 Int 0

MailFrom

发件人

Nvarchar[255]

可以是完整格式,XX 

MailTo

收件人 Ntext

一个或多个目标收件人,逗号隔开

MailCc

抄送人

NText

一个或多个目标收件人,逗号隔开

MailBcc

暗送人

NText

一个或多个目标收件人,逗号隔开

MailDate

邮件日期

Varchar[32]

YYYY-MM-DD HH:NN:SS

MailSubject

邮件主题 NText

长度小于1024

MailBodyType

邮件格式 Int

0=TEXT邮件,1=HTML邮件,二选其一

MailBodyText

Text正文 NText

与MailBodyType相关联

MailBodyHtml

Html正文 NText

与MailBodyType相关联

attachmentflag

附件标志

Int

0=无附件,2=有附件

checkupstatus

审核标志

Int

0

savetodraft

草稿标志

Int

0

savetosent

存到发件箱

Int

0=不保存,1=发送后保存到发件箱

priority

是否紧急

Int

0=普通,1=紧急

MailStatus

待发标志

Int

1

replyto

回复地址 Nvarchar[255]  

isneedreceipt

回执标志 Int

0=不回执,1=请求对方发回执

sendtype

发送方式 Int 0

Sendtime

发送时间 Varchar[32]

YYYY-MM-DD HH:NN:SS


   5.3 发送带附件的邮件

  发送带附件的邮件的过程会复杂一些,需要同时写websent以及websentattach的两条记录。这里假设一封新邮件所生成的邮件ID为AA12010100000001,该邮件有两个附件,分别为 xxxx.doc和yyy.xls。

  1. 为这两个附件生成指定格式的附件文件名,例如AA12010100000001_0001.dat、AA12010100000001_0002.dat。

  2. 为xxx.doc生成一个新文件,c:\DBMail\data\mail\000000\ AA12010100000001_0001.dat,先写入\r\n\r\n四个字节,再读入xxx.doc的文件内容,附加在后面。

  3. 为xxx.doc向websentattach表写入一条记录,具体的取值说明请见下表。

  4. 为yyy.xls生成一个新文件,c:\DBMail\data\mail\000000\ AA12010100000001_0002.dat,先写入\r\n\r\n四个字节,再读入yyy.xls的文件内容,附加在后面。

  6. 为yyy.xls向websentattach表写入一条记录,具体的取值说明请见下表。

  7. 再按前一章发普通不带附件的邮件一样,写入websent表一条记录内容,只需要注意此时attachmentflag要设置为2,以表示这封邮件是有附件的。

   WebSentAttach取值说明表

字段 名称 类型 取值说明
Maild 邮件ID

Varchar[255]

主键,AA12010100000001

AttachId

邮件ID

Varchar[16]

主键,0001或者0002

Account 帐号

Varchar[255]

必须完整格式,例如xx@123.com

Location 位置 Int 0
Direction 方向

Int

0
Attachtype 附件类型 Int 0
ContentType 内容类型

Varchar[255]

附件内容类型,例如application/octet-stream

AttachSize 附件大小 Int 附件的原始大小
AttachName 附件名称

Nvarchar[255]

附件名称
StartTime 上传时间

Varchar[32]



数据库表的建表语句在DBMail\resource目录下,详细请参考“database.dbi”文件。




2013-09-13 15:57
新年优惠:800元/年!
2200元,老用户1600元。
Buy
邮件服务器DBMail
邮件服务器DBMail V5.0 (更新2018.05.23)
Download
DBMail产品改良计划
完美的产品体验,需要有您的参与。
在线填写,立即参与
远程遥控技术支持 100元/次
即时为您排除疑难问题。
立即购买
界面/演示
界面美观大方、简单易用。
界面预览
邮件服务器DBMail  |  购买DBMail  |  软件更新  |  网站更新  |  联系遥志  |  站点地图  |  邮件服务器相关  |  代理合作
遥志软件 版权所有(C)2000-2018 湘ICP备13011306号-3 湘公网安备 43010202000264号
Copyright(C) 2000-2018 Youngzsoft Inc. All Rights Reserved.