茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    sqlserver2008自動(dòng)發(fā)送郵件
    來(lái)源:易賢網(wǎng) 閱讀:1156 次 日期:2014-10-14 11:52:14
    溫馨提示:易賢網(wǎng)小編為您整理了“sqlserver2008自動(dòng)發(fā)送郵件”,方便廣大網(wǎng)友查閱!

    這兩天都在搞這個(gè)東西,從開(kāi)始的一點(diǎn)不懂,到現(xiàn)在自己可以獨(dú)立的完成這個(gè)功能!在這個(gè)過(guò)程中,CSDN的好多牛人都給了我很大的幫助,在此表示十二分的感謝!寫(xiě)這篇文章,一是為了鞏固一下,二嘛我也很希望我寫(xiě)的這點(diǎn)小東西能幫助遇到同樣問(wèn)題的朋友們!當(dāng)然這里有一部分是從網(wǎng)上的摘錄的

    實(shí)現(xiàn)一個(gè)類(lèi)似于注冊(cè)平臺(tái)的功能:比如注冊(cè)了一個(gè)用戶(hù),就會(huì)向注冊(cè)郵箱里發(fā)送一封郵件。首先是要搭建一個(gè)自動(dòng)發(fā)送郵件的平臺(tái),這個(gè)用sql server 2008(sql server 2005也有)的database mail就能很方便的實(shí)現(xiàn)。這個(gè)完成了以后就能夠發(fā)送簡(jiǎn)單的郵件了,但是這樣在應(yīng)用中往往是不夠,我們還要需要建一個(gè)job來(lái)實(shí)現(xiàn)自動(dòng)發(fā)送的功能。

    database mail的構(gòu)建有兩種方法,一是用configure database mail,另外一種是用sql語(yǔ)句完成。

    這兩種方法中的服務(wù)器名字,我剛開(kāi)始以為是隨便起一個(gè)就可以的,(以為sql server的database mail會(huì)自動(dòng)把這個(gè)服務(wù)器名申請(qǐng)為一個(gè)可用的smtp服務(wù)器)后來(lái)貌似不是的。這里好像必須要是一個(gè)存在并且可用的smtp服務(wù)器名

    如果想要?jiǎng)h除建立好的profile和account可以用如下語(yǔ)句

    代碼如下:

    DECLARE

    @account_name sysname,

    @profile_name sysname;

    SELECT

    @account_name = N'want_to_delete_Account'

    @profile_name = N'want_to_delete_Profile';

    -- 從郵件配置文件中刪除數(shù)據(jù)庫(kù)郵件帳號(hào)

    EXEC msdb.dbo.sysmail_delete_profileaccount_sp

    @profile_name = @profile_name,

    @account_name = @account_name;

    -- 刪除數(shù)據(jù)庫(kù)郵件帳號(hào)

    EXEC msdb.dbo.sysmail_delete_account_sp

    @account_name = @account_name;

    -- 刪除數(shù)據(jù)庫(kù)郵件配置文件

    EXEC msdb.dbo.sysmail_delete_profile_sp

    @profile_name = @profile_name;

    完成了database mail的搭建。下面我們就要開(kāi)始完善自動(dòng)發(fā)送郵件的功能。

    我們要實(shí)現(xiàn)發(fā)送郵件的格式是:

    尊敬的×××:---------------------------------------------titleName

    感謝您的注冊(cè),你的用戶(hù)名是××,密碼是××--------------------------object

    你的滿(mǎn)意是我們最大的動(dòng)力。----------------------------------------------------Conclusion

    某某公司 ----------------------------------------------------------Inscribe

    首先我們可以建兩個(gè)表:一個(gè)是AutoSendEmail記錄用戶(hù)ID和Email的信息;一個(gè)是EmailText,一個(gè)static table,里面存儲(chǔ)的是我們要發(fā)送的郵件的格式。

    AutoSendEmail的主要字段有UserID,EmailAddress,EmailTextID(EmailText的一個(gè)外鍵)。這里的UserID對(duì)應(yīng)的是一個(gè)User表,里面存有用戶(hù)的登錄名及登錄密碼。

    EmailText的主要字段有EmailTextID,Subject(主題),titleName(稱(chēng)呼),object(內(nèi)容),Conclusion(結(jié)束語(yǔ)),Inscribe(落款)??赡芸吹竭@里,有人會(huì)認(rèn)為EmailText表沒(méi)必要設(shè)計(jì)的這么麻煩。有EmailTextID,Subject和一個(gè)body就夠了,確實(shí),但是這樣的話(huà),內(nèi)容中的排版格式比較麻煩。這樣設(shè)計(jì)一是為了格式方便,一個(gè)是為了和發(fā)送其他郵件格式統(tǒng)一。插入一行數(shù)據(jù)到EmailText表中

    insert into EmailText (EmailTextID,Subject,TitleName,Object,Conclusion,Inscribe) values(1,'注冊(cè)成功','尊敬的<UserName>:','

    感謝您申請(qǐng)注冊(cè)某某公司會(huì)員! 你的注冊(cè)帳號(hào)為<LoginName>,密碼為<Password>,請(qǐng)妥善保管您的密碼!','

    感謝您對(duì)我們公司的支持!如果任何意見(jiàn)或建議,歡迎來(lái)電咨詢(xún):123-456789。請(qǐng)不要回復(fù)此郵件!',' 某某公司')

    這樣,用job每次遍歷AutoSendEmail,從中得到UserID和EmailTextID,然后根據(jù)UserID可以得到相應(yīng)的登錄名和登錄密碼。同時(shí)根據(jù)EmailTextID,取出里面的titleName(稱(chēng)呼),object(內(nèi)容),Conclusion(結(jié)束語(yǔ)),Inscribe(落款)四個(gè)字段,用得到的登錄名和登錄密碼去替換<UserName> ,<LoginName>,<Password>這樣就可以拼湊成一封郵件的完整body。

    為此,先建立一個(gè)procedure

    代碼如下:

    CREATE PROCEDURE [Services].[SendRegisteredEmail]

    (

    @UserID int,

    @EmailAddress nvarchar(100)

    -- @mailitem_id int OUTPUT

    )

    AS

    declare @userName nvarchar(30)

    declare @Login nvarchar(50)

    declare @password nvarchar(50)

    declare @regUserID int

    declare @titleName nvarchar(100)

    declare @titleResult nvarchar(100)

    declare @object nvarchar(600)

    declare @objectResult nvarchar(600)

    declare @Subject1 nvarchar(100)

    declare @Conclusion nvarchar(600)

    declare @Inscrible nvarchar(100)

    declare @result int

    --declare @time datetime

    declare @body1 nvarchar(max)

    begin

    select @userName=LastName from [Users].[User] where UserID=@UserID

    select @Subject1=Subject,@titleName=TitleName ,@object=Object,@Conclusion=Conclusion,@Inscrible=Inscribe from [Services].[EmailText] where EmailTypeID=1

    select @titleResult=replace(@titleName,'<UserName>',@userName)

    select @Login=Login ,@password=Password from [Users].[RegisteredUser] where UserID=@UserID

    select @objectResult=replace(@object,'<LoginName>',@Login)

    select @objectResult=replace(@objectResult,'<LoginName>',@Login)

    set @body1=@titleResult+N'<br>'+@objectResult+N'<br>'+@Conclusion+N'<br>'+@Inscrible

    EXEC @result=msdb.dbo.sp_send_dbmail @profile_name='SurmountGroupProfile',

    @recipients=@EmailAddress,

    @subject= @Subject1,

    @body = @body1,

    @body_format = 'HTML';

    return @result

    end

    上面代碼用了一個(gè)sql里的替換函數(shù)replace,該函數(shù)的用法是

    用第三個(gè)表達(dá)式替換第一個(gè)字符串表達(dá)式中出現(xiàn)的所有第二個(gè)給定字符串表達(dá)式。

    語(yǔ)法 REPLACE ( 'string_expression1' , 'string_expression2' , 'string_expression3' )

    參數(shù) 'string_expression1' 待搜索的字符串表達(dá)式。string_expression1 可以是字符數(shù)據(jù)或二進(jìn)制數(shù)據(jù)。

    'string_expression2' 待查找的字符串表達(dá)式。string_expression2 可以是字符數(shù)據(jù)或二進(jìn)制數(shù)據(jù)。

    'string_expression3' 替換用的字符串表達(dá)式。string_expression3 可以是字符數(shù)據(jù)或二進(jìn)制數(shù)據(jù)。

    返回類(lèi)型

    如果 string_expression(1、2 或 3)是支持的字符數(shù)據(jù)類(lèi)型之一,則返回字符數(shù)據(jù)。如果 string_expression(1、2 或 3)是支持的 binary 數(shù)據(jù)類(lèi)型之一,則返回二進(jìn)制數(shù)據(jù)。

    msdb.dbo.sp_send_dbmail存儲(chǔ)過(guò)程是用于執(zhí)行發(fā)送郵件的,返回值為0或是1。0代表發(fā)送成功,1為發(fā)送失敗

    郵件的格式是用HTML形式顯示

    有了這個(gè)存儲(chǔ)過(guò)程,那么只要用個(gè)建個(gè)job就可以了。job主要是為了實(shí)現(xiàn)某些需要數(shù)據(jù)庫(kù)自動(dòng)處理的功能。

    job里的command輸入如下代碼:

    代碼如下:

    declare @recordID int

    declare @userID int

    declare @email nvarchar(100)

    declare @typeID int

    declare @result int

    declare EmailCursor cursor for select RecordID,UserID,EmailAddress,EmailTextID from AutoSendEmail

    open EmailCursor

    fetch next from EmailCursor into @recordID,@userID,@email,@typeID

    While ( @@Fetch_Status=0 )

    begin

    if( @typeID=1)

    begin

    exec @result=SendRegisteredEmail @userID,@email

    if(@result=0)

    begin

    delete from [Services].[AutoSendEmail] where RecordID=@recordID

    end

    end

    fetch next from EmailCursor into @recordID,@userID,@email,@typeID

    end

    close EmailCursor

    Deallocate EmailCursor

    這里用游標(biāo)遍歷AutoSendEmail表,job設(shè)定為每分鐘遍歷一次,如果發(fā)送成功,就把該行記錄給刪除。否則保留在表中,下次遍歷時(shí),再次發(fā)送。

    這樣一個(gè)簡(jiǎn)單的應(yīng)用型發(fā)送郵件功能就實(shí)現(xiàn)好了!

    更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄

    更多信息請(qǐng)查看數(shù)據(jù)庫(kù)
    易賢網(wǎng)手機(jī)網(wǎng)站地址:sqlserver2008自動(dòng)發(fā)送郵件
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢(xún)回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢(xún)?yōu)闇?zhǔn)!

    2026國(guó)考·省考課程試聽(tīng)報(bào)名

    • 報(bào)班類(lèi)型
    • 姓名
    • 手機(jī)號(hào)
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢(xún) | 簡(jiǎn)要咨詢(xún)須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
    云南網(wǎng)警備案專(zhuān)用圖標(biāo)
    聯(lián)系電話(huà):0871-65099533/13759567129 獲取招聘考試信息及咨詢(xún)關(guān)注公眾號(hào):hfpxwx
    咨詢(xún)QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)