sql发送邮件问题?邮件怎么判断他是否发送成功呢?

tanaichuan 2013-08-12 02:44:29
RT。。。。。

有没有弄过的高手解答下。。。。

判断邮箱是否发送成功不是进入队列中成功。。谢谢!!!
...全文
380 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanaichuan 2013-08-12
  • 打赏
  • 举报
回复
谢谢7L。。
tanaichuan 2013-08-12
  • 打赏
  • 举报
回复
引用 7 楼 wwwwgou 的回复:
use msdb
GO

DECLARE @mailitemid INT
EXEC sp_send_dbmail --调用SQL2005的邮件发送的存储过程。
	@profile_name = 'mail_first', --邮件配置文件名。--调用发送邮件的存储过程,登录帐号必须有msdb的datamail权限
	@recipients ='wangyunliang@yuantel.com',--用来接受邮件的地址
	@subject = '标题',
	@body = 'Hello,world',
	@body_format='text' ,
	@file_attachments ='',	--附件
	@mailitem_id = @mailitemid OUTPUT
SELECT @mailitemid	--取得@mailitemid

WAITFOR DELAY '00:00:05'	--等5秒后看结果

SELECT
	er.log_id AS [LogID],
	er.event_type AS [EventType],
	er.log_date AS [LogDate],
	er.description AS [Description],
	er.process_id AS [ProcessID],
	er.mailitem_id AS [MailItemID],
	er.account_id AS [AccountID],
	er.last_mod_date AS [LastModifiedDate],
	er.last_mod_user AS [LastModifiedUser]
FROM msdb.dbo.sysmail_event_log er
WHERE mailitem_id = @mailitemid
ORDER BY [LogDate] DESC
谢谢4楼,还有版主不过查询的应该是这个select * from sysmail_allitems 表。。给分了。。。
tanaichuan 2013-08-12
  • 打赏
  • 举报
回复
引用 4 楼 DBA_Huangzj 的回复:
sysmail_allitems (Transact-SQL) sysmail_mailattachments (Transact-SQL) sysmail_event_log (Transact-SQL) sysmail_sentitems (Transact-SQL) sysmail_faileditems (Transact-SQL) sysmail_unsentitems (Transact-SQL) 这些表都记录了sql邮件的相关信息
版主那怎么判断他发送成功也?获取发送sysmail_allitems这个表的sent_status来判断?但是怎么获取他的ID呢?如果获取最大ID的话 那么会出现问题,,,比如几个人同时发送,,然后1 个失败其他成功,就可能获取到其他的ID
Shawn 2013-08-12
  • 打赏
  • 举报
回复
use msdb
GO

DECLARE @mailitemid INT
EXEC sp_send_dbmail --调用SQL2005的邮件发送的存储过程。
	@profile_name = 'mail_first', --邮件配置文件名。--调用发送邮件的存储过程,登录帐号必须有msdb的datamail权限
	@recipients ='wangyunliang@yuantel.com',--用来接受邮件的地址
	@subject = '标题',
	@body = 'Hello,world',
	@body_format='text' ,
	@file_attachments ='',	--附件
	@mailitem_id = @mailitemid OUTPUT
SELECT @mailitemid	--取得@mailitemid

WAITFOR DELAY '00:00:05'	--等5秒后看结果

SELECT
	er.log_id AS [LogID],
	er.event_type AS [EventType],
	er.log_date AS [LogDate],
	er.description AS [Description],
	er.process_id AS [ProcessID],
	er.mailitem_id AS [MailItemID],
	er.account_id AS [AccountID],
	er.last_mod_date AS [LastModifiedDate],
	er.last_mod_user AS [LastModifiedUser]
FROM msdb.dbo.sysmail_event_log er
WHERE mailitem_id = @mailitemid
ORDER BY [LogDate] DESC
發糞塗牆 2013-08-12
  • 打赏
  • 举报
回复
你只要查看3楼脚本中是否有新数据就可以知道有没有发送失败
tanaichuan 2013-08-12
  • 打赏
  • 举报
回复
引用 2 楼 wwwwgou 的回复:
use msdb
GO

EXEC sp_send_dbmail --调用SQL2005的邮件发送的存储过程。
	@profile_name = 'mailadmin', --邮件配置文件名。--调用发送邮件的存储过程,登录帐号必须有msdb的datamail权限
	@recipients ='name1@163.com;name2@163.com',--用来接受邮件的地址
	@subject = '标题',
	@body = 'Hello,world',
	@body_format='text' ,
	@file_attachments ='c:\zou.txt'	--附件

--由于发送是异步进行的,这个存储过程只管发
--如果想知道发送的结果,只有查询邮件的发送日志了
SELECT
	er.log_id AS [LogID],
	er.event_type AS [EventType],
	er.log_date AS [LogDate],
	er.description AS [Description],
	er.process_id AS [ProcessID],
	er.mailitem_id AS [MailItemID],
	er.account_id AS [AccountID],
	er.last_mod_date AS [LastModifiedDate],
	er.last_mod_user AS [LastModifiedUser]
FROM msdb.dbo.sysmail_event_log er
ORDER BY [LogDate] DESC
取它最大的ID获取 然后判断么?这样会出现问题。。。
發糞塗牆 2013-08-12
  • 打赏
  • 举报
回复
sysmail_allitems (Transact-SQL)
sysmail_mailattachments (Transact-SQL)

sysmail_event_log (Transact-SQL)
sysmail_sentitems (Transact-SQL)

sysmail_faileditems (Transact-SQL)
sysmail_unsentitems (Transact-SQL)

这些表都记录了sql邮件的相关信息
發糞塗牆 2013-08-12
  • 打赏
  • 举报
回复
查看所有发给danw但是未成功的记录
USE msdb ;
GO


SELECT items.subject,
items.last_mod_date
,l.description FROM dbo.sysmail_faileditems as items
INNER JOIN dbo.sysmail_event_log AS l
ON items.mailitem_id = l.mailitem_id
WHERE items.recipients LIKE '%danw%'
OR items.copy_recipients LIKE '%danw%'
OR items.blind_copy_recipients LIKE '%danw%'
GO
Shawn 2013-08-12
  • 打赏
  • 举报
回复
use msdb
GO

EXEC sp_send_dbmail --调用SQL2005的邮件发送的存储过程。
	@profile_name = 'mailadmin', --邮件配置文件名。--调用发送邮件的存储过程,登录帐号必须有msdb的datamail权限
	@recipients ='name1@163.com;name2@163.com',--用来接受邮件的地址
	@subject = '标题',
	@body = 'Hello,world',
	@body_format='text' ,
	@file_attachments ='c:\zou.txt'	--附件

--由于发送是异步进行的,这个存储过程只管发
--如果想知道发送的结果,只有查询邮件的发送日志了
SELECT
	er.log_id AS [LogID],
	er.event_type AS [EventType],
	er.log_date AS [LogDate],
	er.description AS [Description],
	er.process_id AS [ProcessID],
	er.mailitem_id AS [MailItemID],
	er.account_id AS [AccountID],
	er.last_mod_date AS [LastModifiedDate],
	er.last_mod_user AS [LastModifiedUser]
FROM msdb.dbo.sysmail_event_log er
ORDER BY [LogDate] DESC
tanaichuan 2013-08-12
  • 打赏
  • 举报
回复
有人回答写么、??

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧