MSSQL发送邮件

SQL Server 并没有内置邮件服务器(Mail Server),它跟我们发送邮件一样,需要用户名和密码通过 SMTPSimple Message Transfer Protocol)去连接邮件服务器。我们想让 SQL Server 来发送邮件,首先要告诉它用户名称,密码,服务器地址,网络传送协议,邮件服务器的端口……等信息。

以下脚本实现了数据库邮件的配置:

下面是具体的配置邮件步骤 

在 sa 系统帐户下运行。 

 

-- 打开邮件设置
use master
go
exec sp_configure 'show advanced options',1 --以下示例显示如何设置并列出所有的配置选项。先将 show advanced option 设置为 1,便可显示高级配置选项。更改该选项后,不带参数执行 sp_configure 将会显示全部配置选项。
go
reconfigure
go
exec sp_configure 'Database mail XPs',1
go
reconfigure
go

-- 添加邮件账户
exec msdb..sysmail_add_account_sp --创建一个新的数据库邮件帐户,用于保存有关 SMTP 帐户的信息
@account_name='yyy' --邮件账户名称(SQL Server 使用)
,@email_address='yyy753@qq.com' --发件人邮件地址
,@display_name=null --发件人姓名
,@replyto_address=null --回复该帐户的邮件时使用的地址
,@description=null --对帐户的说明
,@mailserver_name='smtp.qq.com' --邮件服务器地址
,@mailserver_type='SMTP' --邮件协议
,@port=25 --邮件服务器端口
,@username='yyy@qq.com' --用户名
,@password='123456' --密码
,@use_default_credentials=0 --指定是否使用 SQL Server 数据库引擎的凭据将邮件发送到 SMTP 服务器
,@enable_ssl=0 --指定数据库邮件是否使用安全套接字层对通信进行加密
,@account_id=null --返回新帐户的帐户 ID

-- 添加profile
exec msdb..sysmail_add_profile_sp --创建新的数据库邮件配置文件。
@profile_name='dba_profile' --新配置文件的名称
,@description='dba mail profile' --新配置文件的说明
,@profile_id=null --返回新配置文件的 ID

-- 映射account和profile
exec msdb..sysmail_add_profileaccount_sp --在数据库邮件配置文件中添加一个数据库邮件帐户
@profile_name='dba_profile' --要在其中添加帐户的配置文件的名称
,@account_name='yyy' --要在配置文件中添加的帐户的名称
,@sequence_number=1 --配置文件中的帐户的序列号

-- 利用Database Mail功能发送邮件
exec msdb..sp_send_dbmail --向指定收件人发送电子邮件
@profile_name='dba_profile' --发送邮件的配置文件的名称
,@recipients='yangyunyu123@foxmail.com' --收件人
,@subject='SQL Server E-Mail Test!' --邮件标题
,@body='Hello!yyy!' --邮件内容
,@body_format='TEXT' --邮件格式

-- 查看发邮件结果
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 拥有发送权限。





转载于:https://www.cnblogs.com/yangyy753/archive/2011/12/02/2272391.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.使用 MSSQLServer 服务会用到的用户帐户登录到 Microsoft Windows NT? 4.0 或 Windows? 2000 上。该用户帐户必须是本地计算机的管理员和域帐户。 2.确认 Exchange Server 客户端 (Exchnge32.exe) 或 Microsoft Outlook? 客户端 (Outlook.exe) 能够连接到 Exchange Server 而且能够发送电子邮件。如果使用 Outlook,确保 Outlook 安装时选择了 "用于企业或工作组 "选项。 3.确认所用的 Exchange Server 配置文件中没有个人消息存储 (.pst)。Exchange Server 配置文件的名字不应超过 32 个字符。 4.在 "服务 "选项卡上,确认 Microsoft Exchange Server 和个人通讯簿是唯一可用的服务,然后单击 "发送 "选项卡。确认 "发送到 "框中选定的内容是 Exchange Server 中的邮箱,它应该有一个类似于 "邮箱 - <友好的用户名 > "的名字(其中 <友好的用户名 >是在第一步中登录到 Windows NT 4.0 或 Windows 2000 的用户名)。 5.要运行带有 Exchange Server 的 "SQL 邮件 ",MSSQLServer 服务必须在第一步中登录的同一个用户帐户下运行。在 "控制面板 "中,双击 "服务 ",选择 MSSQLServer 服务,然后单击 "启动 "。 6.确认 "SQL 邮件 "的配置文件是否正确。在 SQL Server 企业管理器中,展开服务器,展开 "支持服务 "文件夹,选择 "SQL 邮件 ",然后用右键单击。单击 "属性 ",然后在 "常规 "选项卡上,确保 "配置文件名 "框中指定的配置文件名正确。(事件探查器名必须与第三步中用到的配置文件名匹配。)单击 "测试 ",验证配置文件设置正确。 7.如果 "SQL 邮件 "无法启动(例如,显示错误信息指出配置文件不正确),请检查设置确保未将 Outlook Express 设置为默认的电子邮件客户程序。在 "控制面板 "中双击 "Internet "选项。在 "程序 "选项卡中,验证 Outlook Express 不在电子邮件组合框中。如果不得不将默认的电子邮件客户程序更改为 Outlook Express 以外的客户程序,那么,可能需要先验证 "SQL 邮件 "能够用邮件配置文件启动,然后再停止并重新启动 MSSQLServer 服务。 在有些情况下,邮件的配置文件可能会损坏而且 "SQL 邮件 "将无法使用它。要更正这个问题,需要把配置文件复制到另一个文件名下,或重新创建配置文件。 8.如果用来启动 Microsoft SQL Server? 的帐户没有权限访问 Exchange 服务器,那么就无法使用 "SQL 邮件 "。执行 xp_cmdshell 来测试 SQL Server 对 Exchange Server 的访问权限,它执行与 "SQL 邮件 "相同的权限。使用下面的命令测试对服务器的连接,假定 Exchange Server 位于名为 "MyServer "的计算机上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值