Send Email using Apex and save as Activity

// Create an email message object
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
String emailAddress = (String) obj.get(‘Email’);
// String[] toAddresses = new String[] {obj.Email};
String[] toAddresses = new String[] {emailAddress};
/*mail.setToAddresses(toAddresses);
mail.setSubject(subject);
mail.setHtmlBody(body);
mail.setWhatId(c.Id);
*/
mail.setTemplateId(templateId);
mail.setTargetObjectId(obj.Id);

    mail.setSaveAsActivity(true);
    Messaging.SendEmailResult[] results = Messaging.sendEmail(
                             new Messaging.SingleEmailMessage[] { mail });
    inspectResults(results);