首页 > 其他分享 >salesforce学习笔记(8)- 邮件模板

salesforce学习笔记(8)- 邮件模板

时间:2024-07-01 17:02:32浏览次数:17  
标签:__ salesforce 邮件 成绩 模板 Visualforce nbsp

1、背景

最近有这样一个需求:有两个自定义对象A和B,两对象关系为Master(A)-Detail(B),A的详细页面有B的关联列表。现在,要求从A页面的活动(Activity)Tab下,使用标准的电子邮件功能进行邮件发送,邮件内容要求包含对象A中的字段数据和对象B中的字段数据,邮件发送或者抄送给固定的6个人。

我们以下图为例,有两个自定义对象:学生和成绩【Master(学生)-Detail(成绩)】。我们需要在学生详细页面,给学生发送期末考试信息,并抄送班主任,邮件内容需要包含学生信息和成绩信息,要求使用邮件模板。

2、方法尝试

首先想到的是Classic 电子邮件模板中的文本类型模板,好处是使用简单,不需要写代码

格式大致如下:

同学,

请确认你的个人信息及期末成绩:
姓名:{!Students__c.Name__c}
年龄:{!Students__c.Age__c}
班级:{!Students__c.Class__c}

祝学习进步!

但是,我们的需求是,邮件内容需要包含学生信息和成绩信息。

经过验证,文本类型模板无法取得当前对象数据以外的对象的数据的字段值,无论对象之间是主-详细信息关系或查找关系。

这种情况下,我们需要选择使用Visualforce邮件模板。

3、解决方案

配置如下:

有个注意点:收件人类型选择联系人(Contact)的原因是,Visualforce邮件模板只能发送给联系人或潜客(Lead)。如下图:

保存后,开始编辑模板。

这里,我们需要通过Apex从后台,取出该学生关联的成绩数据,且显示在Visualforce Component里(注意不是Visualforce Page)。代码如下:

Apex代码:

public class StudentsHelper {
    /**
     * 学生ID
     */
    public Id studentId {get;set;}
    
    /**
     * 获取关联的成绩列表
     */
    public List<Grade__c> getGrade()
    {
        // 初始化成绩列表
        List<Grade__c> grade;
        // 查询最近一条与学生相关的成绩信息
        grade = [SELECT Score__c, Subject__c, Students__c FROM Grade__c WHERE Students__c =: studentId ORDER BY CreatedDate DESC limit 1];
        // 返回查询结果
        return grade;
    }
}

Visualforce Component代码:

<apex:component controller="StudentsHelper" access="global">
    <apex:attribute name="stuId" type="Id" description="Id of the student" assignTo="{!studentId}" />
    <apex:repeat value="{!grade}" var="o">
       {!o.Subject__c} : {!o.Score__c}
    </apex:repeat>
</apex:component>

Visualforce 电子邮件模板编辑内容:

<messaging:emailTemplate subject="期末成绩推送" recipientType="Contact" relatedToType="Students__c">
    <messaging:htmlEmailBody >
    <!-- 在这个标签内可以使用html的一些标签 -->
    
        Dear 同学:<br/>
        <br/>
        请确认你的个人信息及期末成绩:<br/>
        <b>个人信息</b><br/>
        &nbsp;&nbsp;&nbsp;姓名:{!relatedTo.Name__c}<br/>
        &nbsp;&nbsp;&nbsp;年龄:{!relatedTo.Age__c}<br/>
        &nbsp;&nbsp;&nbsp;班级:{!relatedTo.Class__c}<br/>
        
        <b>期末成绩</b><br/>
        <!-- 这里调用的是刚才创建的Visualforce Component -->
        <c:StudentScoreComponent stuId="{!relatedTo.Id}" /><br/>
        
        Best Regards<br/>
        Li Hua
        
    </messaging:htmlEmailBody>
</messaging:emailTemplate>

前面我们说过,Visualforce邮件模板只能发送给联系人或潜客(Lead)。因此,将邮件接收者创建为联系人,如下:

4、结果验证

 点击插入模板

选择我们刚才创建的模板:

邮件发送成功:

5、总结

邮件模板为标准的邮件功能提供了便捷,但是选择创建哪种模板,还是要根据自身需求进行选择,规避模板配置中的官方限制。

另外,当非管理员简档的用户使用模板时,可能会遇到如下错误:

出现这个问题的原因是,非管理员简档的用户可能没有此模板关联的Apex类或Component的权限,可以考虑将Apex设成Global或者创建一个权限集,为该简档用户配置适当权限即可解决。

Copyright © 乔木船长

个人主页:乔木船长

欢迎转发点评和指正!

标签:__,salesforce,邮件,成绩,模板,Visualforce,nbsp
From: https://blog.csdn.net/Cap7a1n/article/details/139987973

相关文章

  • 一个项目学习Vue3---Vue模板方法
     内容资源下载:关注公众号(资小库),下载相关资源分析下面一段代码,学习模板方法的可能的知识<template><div><div>将下面的msg属性放到上面来:{{msg}}</div><divv-html="htmlMsg"></div><divv-bind="id">这个地方绑定了一个ID{{id}}</div>......
  • salesforce学习笔记(9)- 验证用户电子邮件
    1、背景从Spring’22开始,Salesforce要求所有组织和ExperienceCloud站点的所有用户验证他们的电子邮件地址。如果用户从未经验证的电子邮件地址发送电子邮件,Salesforce会拒绝此电子邮件消息,并不会完成发送。未经验证的电子邮件地址在用户验证他们的电子邮件地址或重置密码之......
  • Go1.19革命:打造超效能站点模板爬虫
    目录项目介绍环境配置核心依赖库爬虫实现HTTP请求数据解析数据存储运行与测试代码详解注意事项项目介绍本文将介绍如何使用Go1.19实现一个简单的站点模板爬虫。这个爬虫将访问指定的网站,获取页面内容并解析需要的数据,最终将数据存储在本地文件中。此教程适合具有基本G......
  • html+css+js文章模板
    图片  源代码在图片后面,点赞加关注,谢谢......
  • 如何策划一场成功的品牌推广?案例+模板,一网打尽!
    在当下的商业竞争环境中,品牌推广已成为企业成功的关键。然而要策划一场成功的品牌推广活动,不仅需要创新的思维,还需要对品牌IP打造和搜索流量有深入的了解。作为一名手工酸奶品牌创始人,目前全国也复制了100多家门店。本文将通过一个实际案例和一套策划模板,为你揭示如何策划一场......
  • 邮件发送实现
    说明通过smtp实现邮件发送功能引入pom.xml<dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.2</version></dependency>源码/***发送邮件*@paramusername发送者账号......
  • VS导出项目模板
    当我们想要在两个项目或者两台电脑上使用同一套代码,又不想重新调VS项目属性的时候,这时候就可以选择将项目导出为模板的功能,导出模板之后,就可以很方便的换个地方再用了。 一直点击下一步即可,然后你会发现,你的源代码和配好的环境都添加到这个模板中了。如果想在不同的电脑上使用......
  • C++Primer Plus 第十四章代码重用:模板类和友元14.4.9 ----002
    C++PrimerPlus第十四章代码重用:模板类和友元14.4.9提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:模板类和友元14.4.9提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录C++PrimerPlus第十四章代码重用:模板类和友元14.4......
  • JAVA高级进阶14设计模板
    第十四天、设计模板什么是设计模板(Designpattern)?一个问题通常有n种解法,其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式设计模式有20多种,对应20多种软件开发中会遇到的问题单例设计模式单例设计模式作用:确保一个类只有一个对象场景:计算......
  • 英文sci投稿后返修意见模板分享-涵盖回复审稿人的要点
    如果你收到了审稿人意见的返修,无论是大修还是小修,这都是一件值得高兴的事情。在目前这个学术投稿量巨大的时代,能进入underreview,这本身不仅仅需要论文实力,还需要很大的好运一.前言本次给大家分享的是关于返修内容的书写要点,我以我自身不久前写的返修意见为例,仅供参考如果......