admin管理员组

文章数量:1663684

1、页面嵌入DBMail Webmail登录框

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

完整帐号:

输入密码:

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

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

2.1 GET方式同步密码

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

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

参数

示例

说明

acc

xxxx@test

完整的账号

pwd

654321

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

old

123456

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

jump

0或1

修改之后是否要进行叶面跳转,缺省为1

url

login.asp

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

2.2 POST方式同步密码

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

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

参数

示例

说明

fm_strAccount

xxxx@test

完整的帐号

fm_strPassword

654321

新的密码

fm_strOldPassword

123456

旧的密码

fm_strGoBank

login.asp

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

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

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

3.1 以GET方式跳至Webmail

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

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

参数

示例

说明

acc

xxxx@test

完整的帐号

pwd

654321

密明文或MD5(密码),注意特殊字符要进行URL编码

go

0/1/4

0=邮箱汇总(缺省),1=邮件列表,4=写新邮件

3.2 以POST方式跳至Webmail

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

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

参数

示例

说明

fm_strAccount

xxxx@test

完整的帐号

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',假设由此得到的accseqno=3。

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

3.得到新邮件数量:select count(*) from X000003mail where account='xxx@xxx' 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

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

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

本文标签: 邮件系统办公系统操作步骤邮箱服务器