用SQL自动发邮件需要三步 1,做一个配置文件 2,调用存储过程msdb.dbo.sp_send_dbmail 3, 创建作业
1, 右键->【配置数据库邮件】
配置好了之后可以测试能否发送邮件
进去邮箱查看是否收到邮件或者数据库查询 select * from msdb.dbo.sysmail_allitems
2,接下来就编写发送邮件代码
EXEC msdb.dbo.sp_send_dbmail @recipients='ganqw217ww@163.com', --接收的邮箱 @body=N'测试sp_send_dbmail', --正文 @body_format='HTML', --正文格式 @subject='test', --标题 @profile_name=N'sendEmail', --配置文件,就是前面配置好的 @query='select * from dbAA.dbo.student', --查询 @attach_query_result_as_file=1, --是否以附件发送 @query_attachment_filename='test.csv' --附件文件名此段代码也可以在SQL里面执行,看看有没有保存,没有报错会提示‘邮件已排队’字样
3,新建作业
到了这里就好了,写的时候是参照前辈们的博客,真心感谢前辈,由于参考的很多前辈的文章,我就不列出来了,真心感谢。 在参照了前辈的文章之后,在自己真正做的时候还是会遇到很多问题的,所有还是想做个总结,以便以后忘记了可以看
附上遇到的问题, 1,所选用的邮件有些没有开启POP3/SMTP/IMAP 2,sina不行就换个163试试,再不行换换其他的 3,本人今天用163做了测试,后来就不行了,再后来在网页登录163邮箱发送邮件,提示“对不起,您今天发送的对象过多,请明日再试” 4,这个问题我也找了很久,就是用了@query再用作业就是不行,不用就可以,在SQL语句执行也可以,但是在作业里就是不行,后来的解决办法是在【安全性】->【用户】->NT AUTHORITY\SYSTEM 的属性->【服务器角色】勾选是sysadmin就可以了
因为是后面一帆风顺之后整理的,所以没有把遇到的错误描述粘出来
再次感谢前辈们的分享!!!有不足之处请多多指出。