SQL SERVER SQL傳送郵件

2021-06-18 13:20:07 字數 3891 閱讀 5423

[xhtml]view plain

copy

print?

sql server 並沒有內建郵件伺服器(mail server),它跟我們傳送郵件一樣,需要使用者名稱和密碼通過 smtp(****** message transfer protocol)去連線郵件伺服器。我們想讓 sql server 來傳送郵件,首先要告訴它使用者名稱,密碼,伺服器位址,網路傳送協議,郵件伺服器的埠。。。等資訊。  

以下指令碼實現了資料庫郵件的配置:  

--下面是具體的配置郵件步驟   

--在 sa 系統帳戶下執行。   

--  

--1. 啟用 sql server 2005 郵件功能。   

use master  

go  

exec sp_configure 'show advanced options',1  

go  

reconfigure  

go  

exec sp_configure 'database mail xps',1  

go  

reconfigure  

go  

--2. 在 sql server 2005 中新增郵件帳戶(account)   

exec msdb..sysmail_add_account_sp  

@account_name            = 'jgj'      -- 郵件帳戶名稱(sql server 使用)  

,@email_address           = [email='[email protected]']'[email protected]'[/email] -- 發件人郵件位址  

,@display_name            = null                      -- 發件人姓名  

,@replyto_address         = null

,@description             = null

,@mailserver_name         = '203.86.70.229'           -- 郵件伺服器位址  

,@mailserver_type         = 'smtp'                    -- 郵件協議(sql 2005 只支援 smtp)  

,@port                    = 25                        -- 郵件伺服器端口  

,@username                = [email='[email protected]']'[email protected]'[/email] -- 使用者名稱  

,@password                = '******'      -- 密碼  

,@use_default_credentials = 0

,@enable_ssl              = 0

,@account_id              = null

--3. 在 sql server 2005 中新增 profile   

exec msdb..sysmail_add_profile_sp @profile_name = 'dba_profile'      -- profile 名稱   

,@description  = 'dba mail profile' -- profile 描述   

,@profile_id   = null

-- 在 sql server 2005 中對映 account 和 profile   

exec msdb..sysmail_add_profileaccount_sp  @profile_name    = 'dba_profile' -- profile 名稱   

,@account_name    = 'jgj'     -- account 名稱   

,@sequence_number = 1             -- account 在 profile 中順序   

--5. 利用 sql server 2005 database mail 功能傳送郵件。   

exec msdb..sp_send_dbmail @profile_name =  'dba_profile'     -- profile 名稱   

,@recipients   =  [email='[email protected]']'[email protected]'[/email]  -- 收件人郵箱   

,@subject      =  'sql server 2005 mail 測試' -- 郵件標題   

,@body         =  'hello mail!測試'   -- 郵件內容   

,@body_format  =  'text'      -- 郵件格式   

--6. 檢視郵件傳送情況:   

use msdb  

go  

select * from sysmail_allitems  

select * from sysmail_mailitems  

select * from sysmail_event_log  

--如果不是以 sa 帳戶傳送郵件,則可能會出現錯誤:   

--  

--msg 229, level 14, state 5, procedure sp_send_dbmail, line 1  

--execute permission denied on object 'sp_send_dbmail', database 'msdb', schema 'dbo'.  

--  

--這是因為,當前 sql server 登陸帳戶(login),在 msdb 資料庫中沒有傳送資料庫郵件的許可權,需要加入 msdb 資料庫使用者,並通過加入 sp_addrolemember 角色賦予許可權。假設該sql server 登陸帳戶名字為 「dba」   

--  

--use msdb  

--go  

--  

--create user dba for login dba  

--go  

--  

--exec dbo.sp_addrolemember @rolename   = 'databasemailuserrole',  

--                          @membername = 'dba'

--go  

--  

--此時,再次傳送資料庫郵件,仍可能有錯誤:   

--  

--msg 14607, level 16, state 1, procedure sp_send_dbmail, line 119  

--profile name is not valid  

--  

--雖然,資料庫使用者 「dba」 已經在 msdb 中擁有傳送郵件的許可權了,但這還不夠,他還需要有使用 profile:「dba_profile」 的許可權。   

--  

--use msdb  

--go  

--  

--exec sysmail_add_principalprofile_sp  @principal_name = 'dba'

--                                     ,@profile_name   = 'dba_profile'

--                                     ,@is_default     = 1

--  

--從上面的引數 @is_default=1 可以看出,乙個資料庫使用者可以在多個 mail profile 擁有傳送許可權。  

thinkPHP PHPMailer 傳送郵件

二 在thinkphp的配置檔案config.php中寫以下 郵件傳送配置 mail host smtp.163.com smtp伺服器的名稱 mail host smtp.exmail.qq.com 郵箱是qq mail smtpauth true,啟用smtp認證 mail username 1...

thinkphp phpmailer傳送郵件

1.在function.php中新增 郵件傳送函式 param address 郵件收件人位址 param titlle 郵件標題 param content 郵件內容 param attachment 附件 function sendmail addressee,title,content,att...

Dynamics CRM Plugin 傳送郵件

1 建立郵件 發件人的guid的list 收件人的guid的list 抄送人的guid的list 需要傳送郵件的實體,可以根據此處獲取郵件中需要的資訊 private void createinformemail iorganizationservice service,listfromemail,...