I'm getting above error on below code.
@api guestFirstName; //getting these from parent component
@api guestLastName;
@api guestPhoneNumber;
@api guestCodeFromGuestMaster;
@api guestEmailFromGuestMaster;
//LWC code
sendEmailAfterEvent() {
const recordInput = { toSend: this.guestEmailFromGuestMaster, firstName: this.guestFirstName, lastName: this.guestLastName, phoneNumber: this.guestPhoneNumber } //send parameters
sendEmailToController(recordInput).then(response => {
console.log('Email has been sent...!');
}).catch(error => {
console.log('facing error in sending email ',error.message.body); //If there is an error on response
})
}
//APEX controller code
public with sharing class ControllerLwcExample {
@AuraEnabled(cacheable=true)
public static void sendEmailToController(String toSend, string firstName, string lastName, Integer phoneNumber){
try{
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
String[] toAddresses = new String[] {toSend};
mail.setToAddresses(toAddresses);
mail.setSubject('Booking Confirmation');
String body = 'Dear ' + firstName + ', ';
body += 'Your booking has been confirmed.';
body += 'Please find the details below:';
body += 'First Name: '+firstName;
body += 'Last Name: '+lastName;
body += 'Phone Number: '+phoneNumber;
body += 'Regards';
body += 'Hotel Hotel Hotel';
mail.setHtmlBody(body);
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
}catch(Exception ex){
throw new AuraHandledException(ex.getMessage());
}
}
}
I don't find any problem with above code but still getting below error. Any help would be appreciated.
error: Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'body')
Best Answer
You likely have two errors.
The first is that you are trying to send an email from a cacheable method (which you can't do, as a cacheable cannot perform DML).
This will be causing an error. Change:
@AuraEnabled(cacheable=true)
to@AuraEnabled
Then, this error is getting to the LWC component, and this is where you are getting the
body
issue. Javascript exceptions don't have abody
property on themessage
Change:
error.message.body
toerror.message
(Either that or try Phil's comment) (
error.body.message
)