当前位置:Gxlcms > 数据库问题 > PCB SQL SERVER 发送邮件(异步改同步)

PCB SQL SERVER 发送邮件(异步改同步)

时间:2021-07-01 10:21:17 帮助过:12人阅读

-- =============================================
--发送邮件
-- =============================================
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失败
AS
BEGIN
    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

 

PCB SQL SERVER 发送邮件(异步改同步)

标签:主题   而在   email   exists   msdb   creat   html   发送   span   

人气教程排行