2017-08-03 71 views
1

發送電子郵件給具有唯一附加文件的多個收件人在SQL Server 2012中,我必須使用附件將郵件發送給多個收件人。收件人具有唯一的Id_no,並根據該id_no保存附件文件。因此匹配到id_no附件必須被髮送。通過sql

任何人都可以幫我查詢嗎?

+0

你可以讀到這個位置:[SQL數據庫郵件 - 發送郵件帶附件(https://blogs.msdn.microsoft.com/sqlagent/ 2010/11/10/sql-database-mail-send-emails-with-attachment /) –

回答

0

有點凌亂,但會做的工作:

USE [msdb] 
GO 

--| Assuming that this is a format of your email_details table: 
DECLARE @Recipient TABLE (Id_no INT, recipient_email nvarchar(200), subject nvarchar(200), body nvarchar(200)); 

DECLARE @List TABLE (ID int identity(1,1), Id_no int); 
INSERT INTO @List (Id_no) SELECT Id_no FROM @Recipient; 

DECLARE @i int = (SELECT MAX(ID) FROM @List); 
DECLARE @File_Path nvarchar(max), @recipient_email nvarchar(200), @topic nvarchar(200), @txt nvarchar(200), @Id_no int, @file nvarchar(512); 

WHILE @i > 0 
BEGIN 
    SELECT @Id_no = (SELECT Id_no FROM @List WHERE ID = @i); 

    SELECT @recipient_email = recipient_email, @topic = subject, @txt = body, 
      @file = N'D:\attach\' + CAST(Id_no as nvarchar(16)) + N'.sql' 
    FROM @Recipient 
    WHERE Id_no = @Id_no; 

EXEC sp_send_dbmail @profile_name = 'MailProfile', @recipients = @recipient_email, @subject = @topic, @body = @txt, @file_attachments = @file; 

SET @i += 1 
END 
+0

不能使用這個查詢不起作用 –

+0

哪個位或什麼是錯誤? –

+0

我無法上傳表結構來簡要解釋你的需求。將表名稱作爲email_table,其中包含2列p_id,email_id。本地驅動器根據與電子郵件ID相匹配的p_id no來具有文件 –