课程章节介绍
同学,今天我们来讲两个实际使用InboundMail的例子,也就是当有人发邮件到你的Salesforce邮箱时,系统如何自动处理这些邮件。我们通过代码实现一些有用的操作。
先看第一个例子:给联系人创建任务。
想象一下,你收到一封邮件,想自动为发件人创建一个任务,把邮件内容作为任务描述。怎么做呢?
我们写个Apex类,实现`Messaging.InboundEmailHandler`接口。这个接口要求我们实现一个`handleInboundEmail`方法,它接收邮件对象,然后返回一个`Messaging.InboundEmailResult`。
在这个方法里,我们先用`email.fromAddress`得到发件人地址,然后去查询联系人,看哪个联系人的邮箱地址跟发件人一致。如果找到了,就创建一个新任务,任务的`Subject`可以设为邮件的主题,`Description`就用邮件的纯文本正文。最后关联到这个联系人,并把任务插入数据库。
代码末尾,我们返回一个成功的结果,告诉Salesforce邮件处理成功了。这样,每次收到邮件,就会自动给对应的联系人创建任务,非常方便。
第二个例子更实用:处理取消订阅。
很多公司需要让用户通过邮件退订。比如,用户在主题里写“取消订阅”。我们可以在代码里检查邮件主题是否包含这几个字。如果包含,就去查找所有联系人里邮箱匹配发件人的,以及所有潜在客户里邮箱匹配的,然后把这些人的`HasOptedOutOfEmail`字段设为`true`。这就代表他们选择退出邮件营销了。
同样,我们返回一个成功结果。注意,这里可能匹配到多个联系人或潜在客户,所以我们用列表更新它们。
这样,任何发来的取消订阅邮件都能自动生效,省去人工操作。
这两个例子都实现了同一个接口,返回`InboundEmailResult`,结构很简单,只是一个成功标志。实际部署时,你还需要在Salesforce设置里配好邮件服务,把邮件转发给这个Apex类处理。
这就是通过InboundMail自动处理邮件的两种典型用法。记住,关键点就是实现`handleInboundEmail`方法,从邮件对象里提取信息,然后做业务操作。你可以发挥想象,做更多自动化,比如自动转发、创建个案等等。
好了,这节课就到这里,希望你对InboundMail有了更深的理解。
关键词
Apex
Salesforce
Developer Guide