繁体   English   中英

SSRS 2017 通过单击报告字段打开具有多个电子邮件地址的 Outlook 电子邮件

[英]SSRS 2017 Open Outlook email with multiple email addresses by clicking on a report field

我无法在 Outlook 电子邮件中获取多个电子邮件地址。 我在报告中设置了操作“转到 URL”文本框属性字段,如下所示:-

="javascript:void(window.open('mailto:" + First(Fields!SUPP_EMAIL.Value, "SUPP_Email")+"'))"

根据主表中的参数过滤数据集。 我尝试了多种方法将多个电子邮件地址放入电子邮件窗口,但每次我只得到列表中的第一个,正如函数所说的第一个那样有意义! 我从 MSDN 上的另一篇文章中选择了 javascript 建议,该用户声称使用此解决方案他们能够从过滤后的数据集中获取所有地址。 这个想法是,一旦报告被过滤,用户可以单击用“转到 URL”表达式指定的字段,Outlook 电子邮件窗口将打开,其中包含“收件人”框中过滤列表中的所有电子邮件地址。 如果有人有任何建议,我将不胜感激。

根据您拥有的电子邮件地址数量,您可能会遇到限制。 有关更多详细信息,请参阅此答案....

使用 html Mailto 向多个收件人发送电子邮件:不起作用

但是,假设您的数据集非常小,您可以这样做....

创建一个新参数(例如pEmail )并使其具有多值。 稍后我们将隐藏此参数...

接下来,将参数的可用值和默认值添加到主数据集,并使用SUPP_EMAIL字段作为值。

在您的 URL 表达式中使用以下内容

="javascript:void(window.open('mailto:" 
  + JOIN(Parameters!pEmail.Value, ";")
  + "'))"

一旦它工作,您可以将参数设置为隐藏。

我用过; 作为您所说的用于 Outlook 的分隔符,请注意 Outlook 在这方面几乎是独一无二的,并且大多数邮件客户端使用逗号而不是分号。

说了这么多,这在 SQL 中更容易做到,并构建一个单行结果集,其中包含构建准备在您的报告中使用的 URL。

您可以连接报告源中的值。

示例 SQL:

WITH
la_service_provider_service
AS
(
   SELECT tbl.* FROM (VALUES
    ( 1, '1@gmail.com')
   , ( 1, '2@gmail.com')
   , ( 1, '3@gmail.com')
   , ( 2, '4@gmail.com')
   , ( 2, '5@gmail.com')
   , ( 2, '6@gmail.com')
   , ( 2, '7@gmail.com')
   ) tbl ([LA_SERVICE_PROVIDER_ID], [PROVIDER_EMAIL]) 
)
SELECT 
    [lasps].[LA_SERVICE_PROVIDER_ID]
   , [lasps].[PROVIDER_EMAIL]
   , [ALL_PROVIDER_EMAILS] = 
     STUFF( (SELECT '; '+ [PROVIDER_EMAIL] 
           FROM [la_service_provider_service] AS [lasps2]
           WHERE [lasps2].[LA_SERVICE_PROVIDER_ID] = [lasps].[LA_SERVICE_PROVIDER_ID]
           FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(2000)')
        ,1,2,'')
FROM 
   [la_service_provider_service] AS [lasps];

结果:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM