SQL SERVER SQL发送邮件

本文介绍如何在 SQL Server 中配置和使用数据库邮件功能,包括启用邮件功能、添加邮件账户、配置邮件简介及发送测试邮件等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. SQL Server 并没有内置邮件服务器(Mail Server),它跟我们发送邮件一样,需要用户名和密码通过 SMTP(Simple Message Transfer Protocol)去连接邮件服务器。我们想让 SQL Server 来发送邮件,首先要告诉它用户名称,密码,服务器地址,网络传送协议,邮件服务器的端口。。。等信息。  
  2.   以下脚本实现了数据库邮件的配置:  
  3. --下面是具体的配置邮件步骤   
  4. --在 sa 系统帐户下运行。   
  5. --  
  6. --1. 启用 SQL Server 2005 邮件功能。   
  7. use master  
  8. go  
  9. exec sp_configure 'show advanced options',1  
  10. go  
  11. reconfigure  
  12. go  
  13. exec sp_configure 'Database mail XPs',1  
  14. go  
  15. reconfigure  
  16. go  
  17. --2. 在 SQL Server 2005 中添加邮件帐户(account)   
  18. exec msdb..sysmail_add_account_sp  
  19.         @account_name            = 'jgj'      -- 邮件帐户名称(SQL Server 使用)  
  20.        ,@email_address           = [email='jiaguijun@trusee.com']'jiaguijun@trusee.com'[/email] -- 发件人邮件地址  
  21.        ,@display_name            = null                      -- 发件人姓名  
  22.        ,@replyto_address         = null  
  23.        ,@description             = null  
  24.        ,@mailserver_name         = '203.86.70.229'           -- 邮件服务器地址  
  25.        ,@mailserver_type         = 'SMTP'                    -- 邮件协议(SQL 2005 只支持 SMTP)  
  26.        ,@port                    = 25                        -- 邮件服务器端口  
  27.        ,@username                = [email='jiaguijun@trusee.com']'jiaguijun@trusee.com'[/email] -- 用户名  
  28.        ,@password                = 'xxxxxx'      -- 密码  
  29.        ,@use_default_credentials = 0  
  30.        ,@enable_ssl              = 0  
  31.        ,@account_id              = null  
  32. --3. 在 SQL Server 2005 中添加 profile   
  33. exec msdb..sysmail_add_profile_sp @profile_name = 'dba_profile'      -- profile 名称   
  34.                                  ,@description  = 'dba mail profile' -- profile 描述   
  35.                                  ,@profile_id   = null  
  36. -- 在 SQL Server 2005 中映射 account 和 profile   
  37. exec msdb..sysmail_add_profileaccount_sp  @profile_name    = 'dba_profile' -- profile 名称   
  38.                                          ,@account_name    = 'jgj'     -- account 名称   
  39.                                          ,@sequence_number = 1             -- account 在 profile 中顺序   
  40. --5. 利用 SQL Server 2005 Database Mail 功能发送邮件。   
  41. exec msdb..sp_send_dbmail @profile_name =  'dba_profile'     -- profile 名称   
  42.                          ,@recipients   =  [email='jiaguijun@trusee.com']'jiaguijun@trusee.com'[/email]  -- 收件人邮箱   
  43.                          ,@subject      =  'SQL Server 2005 Mail 测试' -- 邮件标题   
  44.                          ,@body         =  'Hello Mail!测试'   -- 邮件内容   
  45.                          ,@body_format  =  'TEXT'      -- 邮件格式   
  46. --6. 查看邮件发送情况:   
  47. use msdb  
  48. go  
  49. select * from sysmail_allitems  
  50. select * from sysmail_mailitems  
  51. select * from sysmail_event_log  
  52. --如果不是以 sa 帐户发送邮件,则可能会出现错误:   
  53. --  
  54. --Msg 229, Level 14, State 5, Procedure sp_send_dbmail, Line 1  
  55. --EXECUTE permission denied on object 'sp_send_dbmail', database 'msdb', schema 'dbo'.  
  56. --  
  57. --这是因为,当前 SQL Server 登陆帐户(login),在 msdb 数据库中没有发送数据库邮件的权限,需要加入 msdb 数据库用户,并通过加入 sp_addrolemember 角色赋予权限。假设该SQL Server 登陆帐户名字为 “dba”   
  58. --  
  59. --use msdb  
  60. --go  
  61. --  
  62. --create user dba for login dba  
  63. --go  
  64. --  
  65. --exec dbo.sp_addrolemember @rolename   = 'DatabaseMailUserRole',  
  66. --                          @membername = 'dba'  
  67. --go  
  68. --  
  69. --此时,再次发送数据库邮件,仍可能有错误:   
  70. --  
  71. --Msg 14607, Level 16, State 1, Procedure sp_send_dbmail, Line 119  
  72. --profile name is not valid  
  73. --  
  74. --虽然,数据库用户 “dba” 已经在 msdb 中拥有发送邮件的权限了,但这还不够,他还需要有使用 profile:“dba_profile” 的权限。   
  75. --  
  76. --use msdb  
  77. --go  
  78. --  
  79. --exec sysmail_add_principalprofile_sp  @principal_name = 'dba'  
  80. --                                     ,@profile_name   = 'dba_profile'  
  81. --                                     ,@is_default     = 1  
  82. --  
  83. --从上面的参数 @is_default=1 可以看出,一个数据库用户可以在多个 mail profile 拥有发送权限。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值