博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PCB SQL SERVER 发送邮件(异步改同步)
阅读量:5101 次
发布时间:2019-06-13

本文共 1855 字,大约阅读时间需要 6 分钟。

采用SQL SERVER发送邮件是队列方式(异步)发送邮件,所以在我们执行发送邮件后,无法立即获取到邮件是否发送成功了,而在PCB行业实际应用中是需要立即获取发送邮件是否成功的状态来决定下一步逻辑该如何处理的,为了满足此要求我们需重新封装一下发送邮件的存储过程,让发送邮件实现同步发送邮件,方法如下:

一.同步发送邮件方法

-- =============================================--发送邮件-- =============================================CREATE   PROCEDURE [dbo].[P_SendEmail]@MailConfigName VARCHAR(100),         --发送人配置@ToMail VARCHAR(500)=NULL,            --发送人邮箱名@CCMail VARCHAR(500)=NULL,            --抄送人邮箱名@Subject VARCHAR(500)=NULL,           --主题@Body VARCHAR(max)=NULL,              --邮件内容@Body_format VARCHAR(10) = 'TEXT',    --内容格式 HTML或TEXT@FilePath VARCHAR(500) = NULL,        --附件路径@MailState INT  OUTPUT                --1成功  0失败ASBEGIN    DECLARE @Mailitem_Id  INT     SET @MailState = 0        exec msdb.dbo.sp_send_dbmail    @profile_name = @MailConfigName, --配置名称    @recipients = @ToMail, --收件名称    @copy_recipients = @CCMail,--抄送人    @body_format = @Body_format, --内容格式    @subject = @Subject,   --主题    @body = @Body,         --内容    @file_attachments = @FilePath, --附件    @mailitem_id = @Mailitem_Id OUT  --EmailID号        WHILE (EXISTS(SELECT  TOP 1 1 FROM  msdb.dbo.sysmail_unsentitems WHERE mailitem_id = @Mailitem_Id)) --看未发送的消息    BEGIN       waitfor delay '00:00:01'  --延时1S    END        IF (EXISTS(SELECT  TOP 1 1 FROM  msdb.dbo.sysmail_sentitems WHERE mailitem_id = @Mailitem_Id) --查看已发送的消息        AND NOT EXISTS(SELECT  TOP 1 1 FROM  msdb.dbo.sysmail_faileditems WHERE mailitem_id = @Mailitem_Id))  -- 失败状态的消息    BEGIN        SET @MailState = 1    END        END

二.调用发送邮件

DECLARE @MailState INT EXEC [dbo].[P_SendEmail]     @MailConfigName = 'pcbren邮箱',   --配置名称    @ToMail = 'yadnfku@foxmail.com', --收件名称    @Subject = 'pcbren主题',         --主题    @Body = 'pcbren内容',            --内容    @MailState = @MailState OUT     --状态    SELECT @MailState

 

转载于:https://www.cnblogs.com/pcbren/p/10159430.html

你可能感兴趣的文章
HTTP状态码
查看>>
转载一个关于javascript弹出窗口的详解
查看>>
THU的告诫
查看>>
让字体在div容器中垂直居中
查看>>
Android Weekly Notes Issue #221
查看>>
mmap和MappedByteBuffer
查看>>
Linux的基本操作
查看>>
C 算法
查看>>
使用fiddler进程弱网测试
查看>>
jdk path
查看>>
敏捷开发笔记 - 设计
查看>>
我需要在电脑上安装C编译器
查看>>
oracle一次删除多张表
查看>>
H3C 配置CHAP验证
查看>>
H3C ICMP
查看>>
Python Numpy 介绍
查看>>
iOS cocoapods 怎么开源代码
查看>>
第十七节:类与对象-属性-类常量-自动加载对象
查看>>
【博客美化小妙招】你希望有一个可爱的看板娘吗?
查看>>
BZOJ.2159.Crash的文明世界(斯特林数 树形DP)
查看>>