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

相關文章
相關標籤/搜索