salesforce零基础学习(九十三)Email To Case的简单实现

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和你的邮件系统去实现。针对这两种类型须要有不一样的实现的步骤。html

 一. On-Demand Email-to-Casedom

使用 On-Demand Email-to-Case方式有如下的步骤去实现Email建立Case。测试

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

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

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

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

咱们经过一个实例来配置实现这个操做。对象

1. 启用如下红框的内容。blog

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,若是有别的特殊逻辑,能够在里面本身加强。

 1 global class Email2CaseHandler implements Messaging.InboundEmailHandler{  2  global Messaging.InboundEmailResult handleInboundEmail(Messaging.inboundEmail email,Messaging.InboundEnvelope env){  3         Messaging.InboundEmailResult emailResult = new Messaging.InboundEmailResult();  4         Case case4Insert = new Case();  5         if(String.isNotBlank(email.subject) && email.subject.contains('Case')) {  6             case4Insert.subject = email.subject;  7         } else {  8             case4Insert.Subject = 'No subject from Email';  9  } 10         if(email.plainTextBody != null) { 11             case4Insert.Description = email.plainTextBody; 12  } 13         if(email.htmlBody != null) { 14             case4Insert.Description = email.htmlBody; 15  } 16         try { 17  insert case4Insert; 18             List<Messaging.InboundEmail.BinaryAttachment> binaryAttachmentList = email.binaryAttachments; 19             List<Attachment> attachmentList = new List<Attachment>(); 20             for(Messaging.InboundEmail.BinaryAttachment binaryAttachment : binaryAttachmentList) { 21                 Attachment attachment = new Attachment(); 22                 attachment.Body = binaryAttachment.body; 23                 attachment.Name = binaryAttachment.fileName; 24                 attachment.ParentId = case4Insert.Id; 25  attachmentList.add(attachment); 26  } 27  insert attachmentList; 28             emailResult.success = true; 29         } catch(Exception e) { 30             emailResult.success = false; 31             emailResult.message = e.getMessage(); 32  } 33         
34         return emailResult; 35  } 36 }

 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 等等。篇中有错误的地方欢迎指出,有疑问的地方欢迎留言。

相关文章
相关标签/搜索