Salesforce提供了标准的功能来实现通过Email 创建 Case。我们可以设置指定的路由的地址,指定条件的邮件会自动生成到目标salesforce系统的Case数据。Salesforce提供了两种类型的Email To Case的实现,一种是On-Demand Email-to-Case,另外一种是 Email-to-Case。On-Demand Email-to-Case可以允许你单独使用salesforce便可以将邮件转换成Case,Email-to-Case要求允许你使用Salesforce.com和你的邮件系统去实现。针对这两种类型需要有不同的实现的步骤。

 一. On-Demand Email-to-Case

使用 On-Demand Email-to-Case方式有以下的步骤去实现Email创建Case。

1.在你的邮件系统中定义Case提交的邮箱地址;

2.创建路由的地址,这个地址包括了Case定义的地址;

3.配置你的邮件系统转发Case提交到Email Services 地址,这个地址由Salesforce提供;

4. 其中 On-Demand Email-to-Case。

我们通过一个实例来配置实现这个操作。

1. 启用以下红框的内容。

2.当保存以后下面有一个关联列表Routing Addresses,选中picklist名称为Email2Case然后点击New新建一个Routing Address

3. 填写指定的内容,其中Email Address为你的源地址,这个地址的指定的邮件会生成到salesforce生成Case,如果你指定Case Owner则通过此路由生成的Case数据的Case Owner为你设置的用户,否则为系统设置的默认的case owner,选择Case Origin为Email保存即可。

4. 这个时候的Routing Address还没有生效,需要去验证邮箱地址,点击Verify按钮系统会给目标邮箱发送邮件让去verify,verify以后我们便可以使用salesforce自动生成的email service address去配置转发功能了。

去配置的账号会收到一封salesforce的邮件,点击confirm的link便可以进行授权,授权以后刚才创建的Routing Address的状态便会变成Verified。

5. 去邮件系统中配置转发功能,我demo中配置的是163的邮箱,所以登陆我的163账号以后,点击上方的设置,选择常规设置,左侧选择来信分类,然后新建一个来信分类。设置什么条件下系统邮件会转发到目标的email service address,这里设置主题包含Case的邮件便会转发,点击转发到其他邮箱按钮,填写邮箱地址为上面的email service address保存即可。

测试:发送给目标的邮件地址,主题中包括Case

Salesforce系统中便会出现一条Case信息

二. Email-to-Case

上面的方式如果能搞定肯定首选上面的方式,因为减少了定制的成本。但是有的时候标准的功能可能实现不了功能,比如当客户重复发送同样的Case内容会在系统中生成相同的Case,但是其实我们只需要使用其中一个进行追踪以及服务,上面的方式便会在系统中生成多条。又比如我们希望指定的情况要assign给不同的人或者指定的情况我们需要更新不同的Case字段,再或者我们需要发送10M+的附件,但是标准的On-Demand方式只支持10M附件,这个时候便需要使用apex进行定制化开发。

对于Apex email service domain 接收的每封电子邮件,Salesforce都会创建一个单独的InboundEmail对象,其中包含邮件的内容以及邮件的附件。当我们想要通过Email-to-Case方式实现,需要实现以下的步骤。

1. 先实现Messaging.InboundEmailHandler接口去处理一个inbound的邮件信息。

下面的demo很简单,只是针对邮件发送的内容去插入生成Case,如果有别的特殊逻辑,可以在里面自己增强。

 global class Email2CaseHandler implements Messaging.InboundEmailHandler{
global Messaging.InboundEmailResult handleInboundEmail(Messaging.inboundEmail email,Messaging.InboundEnvelope env){
Messaging.InboundEmailResult emailResult = new Messaging.InboundEmailResult();
Case case4Insert = new Case();
if(String.isNotBlank(email.subject) && email.subject.contains('Case')) {
case4Insert.subject = email.subject;
} else {
case4Insert.Subject = 'No subject from Email';
}
if(email.plainTextBody != null) {
case4Insert.Description = email.plainTextBody;
}
if(email.htmlBody != null) {
case4Insert.Description = email.htmlBody;
}
try {
insert case4Insert;
List<Messaging.InboundEmail.BinaryAttachment> binaryAttachmentList = email.binaryAttachments;
List<Attachment> attachmentList = new List<Attachment>();
for(Messaging.InboundEmail.BinaryAttachment binaryAttachment : binaryAttachmentList) {
Attachment attachment = new Attachment();
attachment.Body = binaryAttachment.body;
attachment.Name = binaryAttachment.fileName;
attachment.ParentId = case4Insert.Id;
attachmentList.add(attachment);
}
insert attachmentList;
emailResult.success = true;
} catch(Exception e) {
emailResult.success = false;
emailResult.message = e.getMessage();
} return emailResult;
}
}

2. 配置Email Services: 在setup处搜索 Email Services,新建一个Email Service,输入主要的内容然后保存。

3. 配置Email Address:输入主要的信息,保存后系统会自动生成一个Email Address.

4. 按照之前上面的步骤配置转发的地址即可。

测试:我们给配置的邮件中发送了包含了Case的subject,则会在系统中生成这条Case记录

总结:当我们要求的不高,可以使用 On-Demand方式实现可以考虑使用此种方式实现,因为这种成本比较低。如果搞定不了或者希望更加灵活的处理可以考虑Email Service的Email-to-case方式。篇中很多配置没有详细讲解,感兴趣的可以自行查看文档。篇中demo的apex class逻辑也过于简单,感兴趣的可以自己优化。本篇只是针对email to case浅入浅出。感兴趣的也可以针对第二种方式实现 email to contact, email to lead 等等。篇中有错误的地方欢迎指出,有疑问的地方欢迎留言。

salesforce零基础学习(九十三)Email To Case的简单实现的更多相关文章

  1. salesforce 零基础学习(二十二)Test简单使用

    本篇内容只是本人简单的mark开发中常出现的一些疑问,方便后期项目使用时奠定基础,如果对Test零基础童鞋,欢迎查看Test官方的使用介绍: https://help.salesforce.com/a ...

  2. salesforce 零基础学习(三十九) soql函数以及常量

    在salesforce中,我们做SOQL查询时,往往需要用到计算式,比如求和,求平均值,或者过滤数据时,往往需要通过时间日期过滤,SOQL已经封装了很多的函数,可以更加方便我们的sql查询而不需要自己 ...

  3. salesforce 零基础学习(三十六)通过Process Builder以及Apex代码实现锁定记录( Lock Record)

    上一篇内容是通过Process Builder和Approval Processes实现锁定记录的功能,有的时候,往往锁定一条记录需要很多的限制条件,如果通过Approval Processes的条件 ...

  4. salesforce 零基础学习(三十五) 通过Process Builder和Approval Processes锁定记录(Lock Record)

    有的时候我们可能有这样的需求,当某个字段为特定的值情况下,便锁定此条记录,仅允许Profile为System Admin的用户修改或者解锁,其他的用户只能查看此条记录,不能修改此条记录,这种情况下我们 ...

  5. salesforce 零基础学习(三十八)Translate 的使用(国际化处理)

    本篇参考:http://resources.docs.salesforce.com/200/17/en-us/sfdc/pdf/salesforce_workbench_cheatsheet.pdf ...

  6. salesforce 零基础学习(三十七) DML及Database方法简单描述

    在apex中通过soql查询可以使用两种方式,使用DML语句或者使用Database的方法. 使用DML语句和使用Database类的方法对于我们来说用的都很多,并且都很常见.对于数据库常见的操作:增 ...

  7. salesforce 零基础学习(三十三)通过REST方式访问外部数据以及JAVA通过rest方式访问salesforce

    本篇参考Trail教程: https://developer.salesforce.com/trailhead/force_com_dev_intermediate/apex_integration_ ...

  8. salesforce 零基础学习(三十)工具篇:Debug Log小工具

    开发中查看log日志是必不可少的,salesforce自带的效果显示效果不佳,大概显示效果如下所示: chrome商城提供了apex debug log良好的插件,使debug log信息更好显示.假 ...

  9. salesforce 零基础学习(三十四)动态的Custom Label

    custom label在项目中经常用到,常用在apex class或者VF里面用来显示help text或者error message.有的时候我们需要用到的信息是动态变化的,那样就需要动态来显示信 ...

  10. salesforce 零基础学习(三十二)通过Streams和DOM方式读写XML

    有的时候我们需要对XML进行读写操作,常用的XML操作主要有Streams和DOM方式. 一.Streams方式 Streams常用到的类主要有两个XmlStreamReader 以及XmlStrea ...

随机推荐

  1. C#算法

    递归 任何一个方法既可以调用其他方法又可以调用自己,而当这个方法调用自己时,我们就叫它递归函数或者递归方法! 通常递归有两个特点: 1.递归方法一直会调用自己直到某些条件满足,也就是说一定要有出口; ...

  2. 关于下载calipso数据集以及用python将其读到记事本小结

    今天终于把老板交代的事情忙完了,对于我这位计算机语言的小白来说,其中的艰辛不用说,一把辛酸泪啊!在有计算机语言经验的老手而言,我这些问题似乎也不能算是问题,但我却卡了很久,对此,想把自己所遇到的困难和 ...

  3. python之支付

    一,alipay方式 1,国内的alipay支付:我在网上找了好多的教程,大多数都是属于国内内支付的,所以在这里我就不详细介绍了, 操作:https://www.cnblogs.com/xuanan/ ...

  4. LOJ-10095(缩点的特殊使用)

    题目链接:传送门 思路: 缩点求最值,但是有一点行不通,如果被选中的点才能缩点,否则缩点没有意义: 所以就先缩选中的点,然后从小到大统计没有缩点的点,就是NO: 如果找最小值,就是一个环里的最小值,然 ...

  5. python模块:logging

    # Copyright 2001-2016 by Vinay Sajip. All Rights Reserved. # # Permission to use, copy, modify, and ...

  6. Python开发——15.协程与I/O模型

    一.协程(Coroutine) 1.知识背景 协程又称微线程,是一种用户态的轻量级线程.子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完 ...

  7. 怎么解决syntaxerror:non-utf-8 code starting with \xc4'in file

    怎么解决syntaxerror:non-utf-8 code starting with \xc4'in file   首行增加,已测试可用. # coding=gbk   程序中出现中文,运行的时候 ...

  8. 携带cookie的跨域访问

    携带cookie的跨域解决方案 有的时候访问后台的请求需要携带cookie以供后台分析,比如jQuery的ajax请求: $.ajax({ url: a_cross_domain_url, xhrFi ...

  9. react整理一二(初入React世界)

    react重要思想:组件化(按钮组件.对话框组件.日期组件等等).JSX语法 react把代码和正式渲染目标隔离开来,除了可以在浏览器渲染到DOM来开发网页,还能用于开发原生移动运用 1.专注视图层: ...

  10. 201671010147 2017年8月27号 初学java的感想

    在IT行业中,java无疑是最热门的,很多企业也青睐java,因为他的扩展性好,可以处理更多客户的数据,正是因为java有前景所以才吸引更多人去学习.在大一我们已经接触vhleC语言,大二开始就解除了 ...