-
Salesforce Batch Apex - send Leads and opportunity records in one email along with two different tables.
Actually, I write a batch class to send an email last month leads to the loan officer lookup relation with a contact object at the beginning of the new month in a table format. Now I wanna send lead and opportunity both in one email along with two different tables. I have tried too many time but I could not succeed. Help me how to send two objects data in an email. Here is my existing code
global class testoppty implements Database.Batchable<sObject> { public String query = 'SELECT Loan_Officer_1a__c,Loan_Officer_1a__r.Email, Name, Phone, Starting_Credit_Score__c, ' + 'Status, Enrolled_On__c, Est_Re_Pull_Date__c, Realtor_Name__c ' + ' FROM Lead'; query = 'SELECT Loan_Officer_1__c,Loan_Officer_1__r.Email, Name, Starting_Credit_Score__c, ' + ' StageName, Enrolled_On__c, Est_Re_Pull_Date__c, Realtor_ID__r.Name ' + ' FROM Opportunity'; public EmailTemplate templateId = [Select Id,HtmlValue,Subject from EmailTemplate where name = 'LoanOfficerRecord' LIMIT 1]; global Database.QueryLocator start(Database.BatchableContext bc) { query += ' WHERE CreatedDate >= LAST_MONTH AND CreatedDate <= THIS_MONTH AND Loan_Officer_1a__c != null'; return Database.getQueryLocator(query); } global void execute(Database.BatchableContext BC, list<Lead> allLeads) { Map<Id,List<Lead>> leadMap = new Map<Id,List<Lead>>(); List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMEssage>(); if(allLeads != null && allLeads.size() > 0){ for(Lead l: allLeads){ if(!leadMap.containsKey(l.Loan_Officer_1a__c)){ leadMap.put(l.Loan_Officer_1a__c, new List<lead>()); } leadMap.get(l.Loan_Officer_1a__c).add(l); } } if(leadMap.keySet().size() > 0){ Map<Id,Contact> officers = new Map<Id,Contact>([SELECT Id,Email,Name FROM Contact WHERE Id IN: leadMap.keySet()]); for(Id i: leadMap.keySet()){ Contact con = officers.get(i); System.debug(con); if(String.isnOtBlank(con.Email)){ Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); mail.setToAddresses(new String[]{con.EMail}); mail.setSubject(templateId.Subject); String html = templateId.HtmlValue; html = html.replace('||OfficerName||',con.Name); String leadsTable = '<table cellpadding="3" cellspacing="3" width="100%" align="center" border="1" style="border-collapse:collapse;">'+ '<tr style="font-weight:bold;"><td>Name</td><td>Phone</td><td>Starting Credit Score</td><td>Status</td><td>Enrolled On</td><td>Est. Re Pull Date</td><td>Realtor Name</td></tr>'; for(Lead l: leadMap.get(i)){ leadsTable += '<tr><td>'+l.Name+'</td>'+ '<td>'+l.Phone+'</td><td>'+l.Starting_Credit_Score__c+'</td><td>'+l.Status+'</td><td>'+l.Enrolled_On__c+'</td>'+ '<td>'+l.Est_Re_Pull_Date__c+'</td><td>'+l.Realtor_Name__c+'</td></tr>'; } leadsTable += '</table>'; html = html.replace('||Leads||',leadsTable); html = html.replace('null',' '); mail.setHTMLBody(html); mails.add(mail); } } } if(mails.size() > 0){ Messaging.sendEmail(mails); } } global void finish(Database.BatchableContext BC) { } }-
This discussion was modified 7 years, 5 months ago by
Muhammad Jawwad.
-
This discussion was modified 7 years, 5 months ago by
Forcetalks.
-
This discussion was modified 7 years, 2 months ago by
Forcetalks.
-
This discussion was modified 7 years, 2 months ago by
Forcetalks.
-
This discussion was modified 7 years, 5 months ago by
Log In to reply.
Popular Salesforce Blogs
Approval Process on Opportunity Product in Salesforce
An Approval Process is an automated process an organization can use to approve records in Salesforce. It specifies the steps which are necessary for a…
What are Flows In Salesforce in 2023?
A flow is a Salesforce application that collects data and performs actions in your Salesforce org or an external system. To automate a business process…
How to Choose the Right Salesforce Consulting Partner?
What is the secret to a successful Salesforce CRM implementation for an organization? Clear objectives, customization and configuration, seamless integration of third-party systems as well…
Popular Salesforce Videos
Salesforce Business Analyst Training
In the 35th Episode of the #AskTheHulk series, Savitha Asked about how to switch to IT from Non-IT background. To this question, Shrey suggested that…
Algoworks attended Dreamfest 2019!
Algoworks attended Dreamfest 2019 and we had the most enjoyable time ever! Fleetwood Mac played at the venue and the crowd went crazy, energy was…
Dynamic Report Charts & Customer 360 View in Salesforce - Learn Salesforce Series By Algoworks
In this video, the following points will be covered - 1. Introduction Introduction to conventional setup for Customer 360. 2. Prerequisites Setting up a base…