I was facing the same issue and I confirm it it works in lightning. However, I found out following issues in my code:
Mostly people just copy and paste code from here or any article: https://releasenotes.docs.salesforce.com/en-us/summer18/release-notes/rn_cases_email_apex_default_fields.htm
global void onInitDefaults(QuickAction.QuickActionDefaults[] defaults) {
QuickAction.SendEmailQuickActionDefaults sendEmailDefaults = (QuickAction.SendEmailQuickActionDefaults)defaults.get(0);
EmailMessage emailMessage = (EmailMessage)sendEmailDefaults.getTargetSObject();
Case c = [SELECT CaseNumber, Priority FROM Case WHERE Id=:sendEmailDefaults.getContextId()];
// If case severity is “High,” append “[email protected]” to the existing (and possibly blank) BCC field
if (c.Priority != null && c.Priority.equals('High')) { // Priority is 'High'
emailMessage.BccAddress = '[email protected]';
}
}
But necessarily "defaults.get(0)" may not be the one you are using on
layout. So you need to iterate over all quick actions and find out the
correct one as I'm doing below. My quick action developer name is
"Email_Member".
global void onInitDefaults(QuickAction.QuickActionDefaults[] defaults) {
QuickAction.SendEmailQuickActionDefaults sendEmailDefaults = null;
// Check if the quick action is the standard Case Feed send email action
for (Integer j = 0; j < defaults.size(); j++) {
if (defaults.get(j) instanceof QuickAction.SendEmailQuickActionDefaults &&
defaults.get(j).getTargetSObject().getSObjectType() == EmailMessage.sObjectType &&
defaults.get(j).getActionName().equals('Case.Email_Member') && defaults.get(j).getActionType().equals('SendEmail')) {
sendEmailDefaults = (QuickAction.SendEmailQuickActionDefaults)defaults.get(j);
break;
}
}
system.debug(sendEmailDefaults);
if (sendEmailDefaults != null) {
Case c = [SELECT CaseNumber, Contact.Email, Priority FROM Case WHERE Id=:sendEmailDefaults.getContextId()];
EmailMessage emailMessage = (EmailMessage)sendEmailDefaults.getTargetSObject();
emailMessage.BccAddress = null;
emailMessage.ToAddress = null;//keep null, contact email will come by default
}
}