天天看點

oa系統需要郵箱伺服器,OA辦公系統與郵件系統DBMail無縫結合 - 操作步驟指導(無限使用者¥2200)...

1、頁面嵌入DBMail Webmail登入框

假設Webmail的網址是http://www.com/mail,如果在頁面上要嵌入DBMail Webmail的登入框,可以在頁面上加入如下的代碼:

完整帳号:

輸入密碼:

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

[email protected]

完整的賬号

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

[email protected]

完整的帳号

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

[email protected]

完整的帳号

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

[email protected]

完整的帳号

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='[email protected]',假設由此得到的accseqno=3。

2.得到郵件的總數:select count(*) from X000003mail where account='[email protected]'。

3.得到新郵件數量:select count(*) from X000003mail where account='[email protected]' 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]

必須完整格式,例如[email protected]

Manager

經理帳号

Varchar[255]

IPaddress

IP位址

Varchar[64]

MailSize

郵件大小

Int

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

savetodraft

草稿标志

Int

savetosent

存到發件箱

Int

0=不儲存,1=發送後儲存到發件箱

priority

是否緊急

Int

0=普通,1=緊急

MailStatus

待發标志

Int

1

replyto

回複位址

Nvarchar[255]

isneedreceipt

回執标志

Int

0=不回執,1=請求對方發回執

sendtype

發送方式

Int

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]

必須完整格式,例如[email protected]

Location

位置

Int

Direction

方向

Int

Attachtype

附件類型

Int

ContentType

内容類型

Varchar[255]

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

AttachSize

附件大小

Int

附件的原始大小

AttachName

附件名稱

Nvarchar[255]

附件名稱

StartTime

上傳時間

Varchar[32]

資料庫表的建表語句在DBMail\resource目錄下,詳細請參考“database.dbi”檔案。

2013-09-13 15:57