0

如何向多个收件人发送凝胶:电子邮件?我有每个记录有 3 个电子邮件地址,我想向所有 3 个电子邮件地址发送相同的电子邮件。

这是我当前的代码:

<core:forEach items="${getDetails.rows}" var="row">
    <core:set value="${row.Manager_Email}" var="manager" />
    <core:set value="${row.Delivery_Manager_Email}" var="deliveryManager" />
    <core:set value="${row.Director_Email}" var="director" />

    <core:choose>
        <core:when test="${status == 1}">
            <gel:email from="Clarity_Do-Not-Reply@gov.nl.ca" fromName="Clarity Administrator" to="${manager};${deliveryManager};${director}" subject="Notification: Project is due to finish within 7 days">

我已经尝试过了,并且:

to="${manager;deliveryManager;director}"

两者似乎都不起作用。文档说它们可以与 ; 分开。但它似乎没有工作。我究竟做错了什么?

4

2 回答 2

0

原始脚本示例中的这种方法是正确的方法:to="${manager};${deliveryManager};${director}"

也就是说,使用单个分隔符类型(在本例中为分号)来分隔每个评估的变量值。

您第二次尝试的样式肯定不会起作用,因为${manager;deliveryManager;director}它不是有效的 JEXL 表达式。

还有一些需要注意的点,例如:

  1. to 属性中的每个值都不应该有任何其他可能被误认为是另一种分隔符类型的内容(例如,没有空格或逗号),因为您可能不会混合和匹配。
  2. 只直接使用电子邮件地址,意思some.one@somedomain.com是不要使用类似的形式"One, Some" <some.one@somedomain.com>
  3. 确保列表中没有重复的电子邮件地址。每个地址都必须是唯一的。正如@coda 提供的答案中所提到的,您可以使用一些额外的 GEL 过滤掉重复项,或者您可以将逻辑放入查询(row源)中以进行重复数据删除。
  4. 如果这是在 SaaS 环境中运行,请确保您选择的用户地址都不属于某些内置用户帐户(如username@mailserver.com或类似帐户)的默认地址,因为它们会导致电子邮件在发送前被过滤掉。
于 2020-07-11T10:37:24.487 回答
0

它只适用于其中之一吗?我将开始并确定邮件服务器在此环境中工作。选择其中一个变量并将其打印出来。如果这不是您所期望的,那么修复您的查询或您获得这些绑定变量的任何地方。如果正确,则删除其他两个收件人并确定您可以成功地向其中一个收件人发送电子邮件。如果可行,则继续进行故障排除。

如果它不起作用,那么您可能会发现您的邮件服务器不允许中继、未经身份验证的服务或从不存在的电子邮件帐户发送邮件。你可以开始检查这些东西。

GEL 电子邮件标签和 CORE 电子邮件标签的问题之一是它不支持包含两次相同的电子邮件地址。如果您检查您的项目,您可能会发现相同的资源同时被列为交付经理和经理或主管等。这是标签的问题。

您可以通过将所有收件人放入不允许重复的数据结构(如哈希映射/集)中来解决此问题,然后将它们迭代回以分号分隔的字符串。

regoXchange上可能有很多这种类型的例子,这是一个巨大的免费 G​​EL 脚本存储库以及与 Clarity 相关的定制和开发。

于 2019-11-02T22:59:36.630 回答