1. 程式人生 > >salesforce零基礎學習(九十三)Email To Case的簡單實現

salesforce零基礎學習(九十三)Email To Case的簡單實現

.html 比較 html isn email fir 針對 verify except

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,如果有別的特殊邏輯,可以在裏面自己增強。

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

salesforce零基礎學習(九十三)Email To Case的簡單實現