clone() in Apex can be used to clone EmailMessage record using Apex in Salesforce.
Sample code:
EmailMessage objEM = [
SELECT BccAddress, BccIds, CcAddress, CcIds,
ContentDocumentIds, EmailTemplateId, FirstOpenedDate,
FromAddress, FromName, HasAttachment, Headers, HtmlBody,
Incoming, IsBounced, IsClientManaged, IsDeleted,
IsExternallyVisible, IsOpened, IsTracked, LastOpenedDate,
MessageDate, MessageIdentifier, ParentId, RelatedToId,
ReplyToEmailMessageId, Status, Subject, TextBody,
ThreadIdentifier, ToAddress, ValidatedFromAddress
FROM EmailMessage WHERE Id = '<Id of the Record>'
];
EmailMessage objCloneEM = objEM.clone();
objCloneEM.HTMLBody = 'Testing';//Updating Body
objCloneEM.TextBody = 'Testing';//Updating Body
insert objCloneEM;