You need to sign in to do that
Don't have an account?

Question regarding Apex Email services for email to cases
Hello, Our requirement is to create cases from incoming emails. We have around 25 customers and each of them have a specific service request template email format. We have to parse the incoming mail and create case and assign the values to fields. I know how to create the Apex class. I've tested for two customers and it's working great.
My question is how do I create an Apex class for all the 25 templates at once. Is that even possible? All these emails come to the same email address. I cannot create multiple email services/classes (as the forwarding address can only be one).This is my current class. I'm using "if else" based on the incoming email address and parsing the data. But how do I do it for 25 email addresses? I'm new to Apex and having a hard time dealing with it. Please help. This code is working fine, but it only deals with two customers. How do I do it for 25 customers?
My question is how do I create an Apex class for all the 25 templates at once. Is that even possible? All these emails come to the same email address. I cannot create multiple email services/classes (as the forwarding address can only be one).This is my current class. I'm using "if else" based on the incoming email address and parsing the data. But how do I do it for 25 email addresses? I'm new to Apex and having a hard time dealing with it. Please help. This code is working fine, but it only deals with two customers. How do I do it for 25 customers?
global Class EtoCaseservices implements Messaging.InboundEmailHandler { // Instantiate variables that we will need for handling this email String location; String need; String service; String phone; String warranty; String po; String description; String initiator; String order; Integer locationIdx; Integer needIdx; Integer serviceIdx; Integer phoneIdx; Integer warrantyIdx; Integer poIdx; Integer descriptionIdx; Integer initiatorIdx; Integer orderIdx; String locationFinal; String needFinal; String serviceFinal; String tradeFinal; String InboxFinal; String InitiatorFinal; String TimeFinal; String poFinal; String phoneFinal; String servicenofinal; String warrantyFinal; String descriptionFinal; String orderFinal; global Messaging.InboundEmailResult handleInboundEmail (Messaging.InboundEmail email, Messaging.InboundEnvelope envelope){ Messaging.InboundEmailResult result = new Messaging.InboundEmailResult(); if (email.fromaddress =='customerone@testl.com') { location = 'Client: '; need = 'Need: '; service = 'Service Request #: '; phone = 'Client Contact Phone: '; locationIdx = email.plainTextBody.indexOf(location); needIdx = email.plainTextBody.indexOf(need); serviceIdx = email.plainTextBody.indexOf(service); phoneIdx = email.plainTextBody.indexOf(phone); String[] bodySplitted = email.PlainTextBody.split('\n'); String descriptionFinal = email.plainTextBody.substringBetween('-----------------------------------------------------------------------------------' , '---------------------------------------------------------------------------------------------' ).normalizeSpace(); locationFinal = email.plainTextBody.substring( locationIdx + location.length(), email.plainTextBody.indexOf('\n', locationIdx + location.length())); String[] locNme = locationFinal.split(' ', 3); needFinal = email.plainTextBody.substring( needIdx + need.length(), email.plainTextBody.indexOf('\n', needIdx + need.length())); serviceFinal = email.plainTextBody.substring( serviceIdx + service.length(), email.plainTextBody.indexOf('\n', serviceIdx + serrvice.length())); phoneFinal = email.plainTextBody.substring( phoneIdx + phone.length(), email.plainTextBody.indexOf('\n',phoneIdx + phone.length())); tradeFinal = email.plainTextBody.substringBetween('Not to Exceed: ', 'Service Level: '); InboxFinal = email.plainTextBody.substringBetween('Email Delivery Time: ', 'Client: '); InitiatorFinal = email.plainTextBody.substringBetween('RFS Initiator Name: ' , 'Client Contact Phone: '); TimeFinal = email.plainTextBody.substringBetween('Service Requested: ' , 'Email Delivery Time: '); poFinal = email.plainTextBody.substringBetween('Service Request #: ' , 'RFS State: '); servicenoFinal = email.plainTextBody.substringBetween('Service Request #: ' , '(Include this # on Invoice)'); system.debug('locationFinal: ' +locationFinal); if (locationFinal != NULL) { SVMXC__Site__c [] locArray = [Select Id, Name, SVMXC__Account__r.Id from SVMXC__Site__c where Name = :locationFinal]; try{ case c= new case(); c.subject= 'BUNNSERVE REQUEST'; c.Case_Type__c= 'Service Request'; c.Priority='High'; c.Origin='Email'; c.Status='new'; c.AccountId = locArray[0].SVMXC__Account__r.Id; c.SVMXC__Site__c = locArray[0].Id; c.recordtypeId = '012E0000000oRWX'; c.Description= descriptionFinal + '\n' + 'Not to Exceed: ' + tradeFinal + '\n' + 'Service Requested: ' + TimeFinal; c.KA_PO__c= poFinal; c.Location_Contact_Name__c = InitiatorFinal; c.BSP_Location_Contact_Phone__c = phoneFinal; upsert c; } catch(System.dmlException e) {System.debug('Error: Unable to create new Case: ' + e); } } else if (locationFinal == null){ System.debug('No Location was found'); } } else if (email.fromaddress =='customertwo@sample.com') { location = 'Site: '; Warranty = 'Warranty: '; phone = 'Caller Phone: '; po = 'The referenced work order number is '; description = 'Problem Description: '; initiator = 'Caller name: '; phone = 'Caller phone: '; locationIdx = email.plainTextBody.indexOf(location); WarrantyIdx = email.plainTextBody.indexOf(Warranty); phoneIdx = email.plainTextBody.indexOf(phone); poIdx = email.plainTextBody.indexOf(po); descriptionIdx = email.plainTextBody.indexOf(description); initiatorIdx = email.plainTextBody.indexOf(initiator); phoneIdx = email.plainTextBody.indexOf(phone); String[] bodySplitted = email.PlainTextBody.split('\n'); locationFinal = email.plainTextBody.substring( locationIdx + location.length(), email.plainTextBody.indexOf('\n', locationIdx + location.length())); String[] locNme = locationFinal.split(' ', 3); WarrantyFinal = email.plainTextBody.substring( WarrantyIdx + Warranty.length(), email.plainTextBody.indexOf('\n', WarrantyIdx + Warranty.length())); poFinal = email.plainTextBody.substring( poIdx + po.length(), email.plainTextBody.indexOf('\n',poIdx + po.length())); descriptionFinal = email.plainTextBody.substring( descriptionIdx + description.length(), email.plainTextBody.indexOf('\n', descriptionIdx + description.length())); initiatorFinal = email.plainTextBody.substring( initiatorIdx + initiator.length(), email.plainTextBody.indexOf('\n', initiatorIdx + initiator.length())); phoneFinal = email.plainTextBody.substring( phoneIdx + phone.length(), email.plainTextBody.indexOf('\n',phoneIdx + phone.length())); orderFinal = email.plainTextBody.substringBetween('Date Entered: ', 'Region: '); system.debug('locationFinal: ' +locationFinal); if (locationFinal != NULL) { SVMXC__Site__c [] locArray = [Select Id, Name, SVMXC__Account__r.Id from SVMXC__Site__c where Name = :locationFinal]; try{ case c= new case(); c.subject= 'BUNNSERVE REQUEST'; c.Case_Type__c= 'Service Request'; c.Priority='High'; c.Origin='Email'; c.Status='new'; c.AccountId = locArray[0].SVMXC__Account__r.Id; c.SVMXC__Site__c = locArray[0].Id; c.recordtypeId = '012E0000000oRWX'; c.Description= descriptionFinal + '\n' +'\n' + 'Warranty: ' + WarrantyFinal + '\n' + '\n' + 'Date Entered: ' + orderFinal; c.KA_PO__c= poFinal; c.Location_Contact_Name__c = InitiatorFinal; c.BSP_Location_Contact_Phone__c = phoneFinal; upsert c; } catch(System.dmlException e) {System.debug('Error: Unable to create new Case: ' + e); } } else if (locationFinal == null){ System.debug('No Location was found'); } } return result; } // Close handleInboundEmail () }

Any help guys?