概述
這里所指的SQLMail,是微軟公司的關(guān)系數(shù)據(jù)庫管理系統(tǒng)SQLServer所提供的郵件功能。在SQLServer中包含一些擴展存儲過程,使得SQLServer可以通過基于WindowsNT內(nèi)部的消息應用編程界面(MAPI)的客戶機郵件程序接收和發(fā)送郵件消息。SQLMail可發(fā)送的消息包括文本串,附加文件或SQL語句的執(zhí)行結(jié)果集。應用SQLMail的擴展存儲過程,郵件消息可以從一個觸發(fā)器或一個存儲過程中發(fā)送,并且通過SQLServer提供的任務和警告等功能,可以根據(jù)需要在不同的時間和情況下發(fā)送。
SQLMail工作流程
SQLMail工作流程主要分為郵件收、發(fā)兩個過程。
在SQLServer內(nèi)可以通過一定方法,調(diào)用擴展存儲過程xp_sendmail,將收信人電子郵件地址,標題,信的內(nèi)容等以參數(shù)的形式傳送給xp_sendmail,由它通過客戶端MAPI接口將發(fā)送郵件任務交給如MicrosoftExchangeClient或Outlook97等郵件客戶端程序,最終通過郵件服務將郵件發(fā)送出去。
收郵件的過程與此相似。在SQLServer端定期或手工調(diào)用xp_readmail擴展存儲過程,通過客戶端MAPI接口將存放在郵件服務器或客戶端的郵件及其他信息讀入SQL變量中,用來滿足特定的處理需要。
配置SQLMail
配置SQLMail的首要條件是要有一個電子郵件帳戶,不管是局域網(wǎng)內(nèi)的MSExchangeServer或MSMail3.x的郵件帳戶,還是Internet上的SMTP,POP3等郵件帳戶均可。具體配置可分為以下幾步:
1.為SQLServer創(chuàng)建一個NT域用戶帳號,要求具有本地管理員組的權(quán)限。仔細設置帳號口令,保證口令足夠復雜,且設成口令永不過期和用戶不得更改口令。
2.雙擊控制面板的服務圖標,找到MSSQLServer的啟動設置,將UseSystemAccount改為UseThisAccount,將剛才建立的NT帳??口令輸入。重新啟動SQLServer。
3.在安裝SQLServer的服務器上以與啟動SQLServer相同的NT帳號登錄,然后安裝支持MAPI接口的郵件客戶端程序,如MSExchangeClient和Outlook97。
4.打開控制面板的電子郵件選項,建立一個配置文件(Profile)。用這個配置文件啟動郵件客戶端程序,反復檢驗直至能正常收發(fā)郵件。
5.從SqlEnterpriserManager中,點中相應的服務器圖標,從Server菜單中選SQLMail/Configure,將在第4步中建立的配置文件名輸入。
6.從SqlEnterpriserManager中,點中相應的服務器圖標,從Server菜單中選SQLMail/Start,如果SqlMail的圖標變?yōu)榫G色,則SQLMail成功啟動。
此存儲過程通過客戶端MAPI接口發(fā)送郵件,內(nèi)容可以是文本串,附加文件或SQL語句的執(zhí)行結(jié)果集。xp_findnextmsg[@msg_id=msg_id[OUTPUT]][,@type=type][,@unread_only={true|false}])
此存儲過程在郵箱中查找特定的郵件,并返回一封郵件的消息ID。xp_readmail([@msg_id=msg_id][,@type=type[OUTPUT]][,@peek={true|false}][,@suppress_attach={true|false}][,@originator=@senderOUTPUT][,@subject=@subject_lineOUTPUT][,@message=@body_of_messageOUTPUT][,@recipients=@recipient_listOUTPUT][,@cc_list=@cc_listOUTPUT][,@bcc_list=@bcc_listOUTPUT][,@date_received=@dateOUTPUT][,@unread={true|false}][,@attachments=@temp_file_pathsOUTPUT])[,@skip_bytes=@bytes_toskipOUTPUT][,@msg_length=@length_in_bytesOUTPUT])
此存儲過程從指定的郵件收件箱中讀取指定消息ID的郵件的各項信息。
xp_deletemail[@msg_id=]msg_id
從郵件收件箱中刪除一封指定消息ID的郵件。
注釋:
1.存儲過程的多個參數(shù)間用逗號間隔開,[]內(nèi)的為可選參數(shù),每個參數(shù)均以@符號加字符串開頭,用以區(qū)別不同的參數(shù)項。等號后可以是常量,也可以是預先定義好的變量。
2.如果需要將某個結(jié)果值賦予參數(shù)中預先定義好的變量,就必須在該項參數(shù)的最后加OUTPUT。
3.常用參數(shù)解釋:
@recipient=recipient;指定收件人的電子郵件地址。如果有多個收件人,可以用分號分隔開。
@subject=subject;郵件的標題。發(fā)送郵件時的默認值為"SQLServerMessage"。
@message=message;郵件的具體內(nèi)容。
@attachments=attachments;郵件掛接的附加文件名。
@type=type;基于MAPI定義的消息類型,詳細信息參見"MicrosoftWindowsNTResourceKit"或"MicrosoftMailTechnicalReference"。
@query=query;一條SQL可執(zhí)行語句,其執(zhí)行結(jié)果以正文或附件的方式隨郵件發(fā)送。
@msg_id=msg_id;對于信箱中的每一封郵件均被分配了[風雨情難覓,心手兩迷離]
@attachments=attachments;郵件掛接的附加文件名。
@type=type;基于MAPI定義的消息類型,詳細信息參見"MicrosoftWindowsNTResourceKit"或"MicrosoftMailTechnicalReference"。
@query=query;一條SQL可執(zhí)行語句,其執(zhí)行結(jié)果以正文或附件的方式隨郵件發(fā)送。
@msg_id=msg_id;對于信箱中的每一封郵件均被分配了一個特殊的消息ID,用以相互區(qū)分。