-
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 5 years, 1 month ago by Muhammad Jawwad.
- This discussion was modified 5 years, 1 month ago by Forcetalks.
- This discussion was modified 4 years, 11 months ago by Forcetalks.
- This discussion was modified 4 years, 11 months ago by Forcetalks.
Log In to reply.
Popular Salesforce Blogs
How To Optimize Automated Tests and Securely Log in to Salesforce Without Verification Code or MFA?
Like in any software testing, automation testing of Salesforce solutions is a reliable approach to verify the functionality and integrity of the platform. Automated tests…
Device Detection With Devicedetect.js In Salesforce
A good responsive design in UI can render behaviour across different screen sizes. Though there are few edge cases in Salesforce development, especially where you…
Why Force.com Is Winning the Cloud Platform War
Salesforce, which offers Customer Relationship Management (CRM) also offers a cloud-based computing service called the Force.com system. This system allows developers to build and host…
Popular Salesforce Videos
Salesforce Admin Certification 2020 Questions Explained with References - Part I
How to prepare and pass Salesforce Admin Certification with Practice Exam Questions 2020 practice questions and answers for the Salesforce Administration Salesforce Certified Admin Exam…
Salesforce CRM Full Training Tutorial For Beginners
In this video, Nick Boardman explains how to use the key features inside Salesforce CRM. He explains various dashboard options, setting up campaigns etc.
Gear up Marketing Automation with Salesforce Pardot
Salesforce trailblazer Admin group, Nasik with a session on Gear up Marketing Automation with Salesforce Pardot. Pardot is a marketing automation solution that helps companies…