//done public with sharing class OrgWideEmailHandler { // @AuraEnabled // public static List> getAllFromEmailOptions() { // List> emails = new List>(); // System.debug('emails>>>>>>>'+emails); // try{ // // Current user email // User currentUser = [ SELECT Id, name ,Email FROM User WHERE Id = :UserInfo.getUserId() LIMIT 1]; // emails.add(new Map{ // 'label' => currentUser.Name + '(' + currentUser.Email + ')', // 'value' => currentUser.Email // }); // // Org-Wide emails // for (OrgWideEmailAddress owa : [ SELECT Id, Address, displayname ,IsAllowAllProfiles FROM OrgWideEmailAddress WHERE Address != null ]) { // emails.add(new Map{ // 'label' => owa.displayname + '(' + owa.Address + ')', // 'value' => owa.Address // }); // } // // return emails; // }catch(Exception e){ // System.debug('Error in getAllFromEmailOptions: ' + e.getMessage()); // FME_Logger.error(e.getMessage(),' OrgWideEmailHandler ' + e.getLineNumber(),'getAllFromEmailOptions'); // emails = new List>(); // }finally{ // FME_Logger.saveLog(); // } // return emails; // } @AuraEnabled public static List> getAllFromEmailOptions() { List> options = new List>(); // Org-Wide Email Addresses for (OrgWideEmailAddress owe : [ SELECT Id, DisplayName, Address FROM OrgWideEmailAddress ]) { options.add(new Map{ 'label' => owe.DisplayName + ' <' + owe.Address + '>', 'value' => owe.Id // ✅ IMPORTANT }); } // Current User (optional) User u = [ SELECT Id, Name, Email FROM User WHERE Id = :UserInfo.getUserId() ]; if(options.isEmpty() ){ options.add(new Map{ 'label' => u.Name + ' <' + u.Email + '>', 'value' => u.Id }); } else { options.add(0, new Map{ 'label' => u.Name + ' <' + u.Email + '>', 'value' => u.Id }); } return options; } @AuraEnabled public static void sendEmailFromLwc(String fromEmail, String toEmail, String ccEmail, String bccEmail, String subject, String body, String fileId, String fileName ) { System.debug('fromEmail>>>>>>>'+fromEmail); System.debug('toEmail>>>>>>>'+toEmail); System.debug('ccEmail>>>>>>>'+ccEmail); System.debug('bccEmail>>>>>>>'+bccEmail); System.debug('subject>>>>>>>'+subject); System.debug('body>>>>>>>'+body); System.debug('fileId>>>>>>>'+fileId); System.debug('fileName>>>>>>>'+fileName); try{ Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); mail.setToAddresses(new List{ toEmail }); if (!String.isBlank(ccEmail)) { mail.setCcAddresses(new List{ ccEmail }); } if (!String.isBlank(bccEmail)) { mail.setBccAddresses(new List{ bccEmail }); } mail.setSubject(subject); mail.setHtmlBody(body); // If fromEmail is not current user's email, try setting OrgWideEmailAddressId String currentUserEmail = [SELECT Email FROM User WHERE Id = :UserInfo.getUserId()].Email; System.debug('currentUserEmail>>>>>>>'+currentUserEmail); System.debug('fromEmail>>>>>>>'+fromEmail); if (fromEmail != currentUserEmail) { List matches = [ SELECT Id FROM OrgWideEmailAddress WHERE Address = :fromEmail LIMIT 1 ]; if (!matches.isEmpty()) { mail.setOrgWideEmailAddressId(matches[0].Id); } } if (!String.isBlank(fileId)) { // Get the latest ContentVersion for the given ContentDocument Id ContentVersion cv = [ SELECT Title, VersionData, FileExtension FROM ContentVersion WHERE ContentDocumentId = :fileId ORDER BY CreatedDate DESC LIMIT 1 ]; System.debug('cv>>>>>>>'+cv); System.debug('cv.Title>>>>>>>'+cv.Title); System.debug('cv.VersionData>>>>>>>'+cv.VersionData); System.debug('cv.FileExtension>>>>>>>'+cv.FileExtension); // Attach the file to the email Messaging.EmailFileAttachment efa = new Messaging.EmailFileAttachment(); efa.setFileName(cv.Title + '.' + cv.FileExtension); efa.setBody(cv.VersionData); efa.setContentType('application/octet-stream'); mail.setFileAttachments(new Messaging.EmailFileAttachment[] { efa }); } Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail }); } catch (Exception e) { FME_Logger.error(e.getMessage(), 'OrgWideEmailHandler', 'sendEmailFromLwc'); } finally { FME_Logger.saveLog(); } } }