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提供;3d

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

咱們經過一個實例來配置實現這個操做。htm

1. 啓用如下紅框的內容。對象

2.當保存之後下面有一個關聯列表Routing Addresses,選中picklist名稱爲Email2Case而後點擊New新建一個Routing Addressblog

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 等等。篇中有錯誤的地方歡迎指出,有疑問的地方歡迎留言。

相關文章
相關標籤/搜索