Email customization with email templates
Using Apex, you can write code to send emails using the Messaging API. This allows you to dynamically generate all attributes of the emails you wish to send: the from and to address, subject title, and body. However, keep in mind that end users will more than likely want to add their own logo and messaging to these emails, even if such emails are simply notifications aimed at their internal users.
Instead of hardcoding the structure of emails in your code, consider using Email Templates (under the Setup menu). This feature allows administrators in the subscriber org to create their own emails using replacement parameters to inject dynamic values from records your objects define. Using a Custom Setting, for example, you can ask them to configure DeveloperName
of the email template to reference in your code. You can package email templates as starting points for further customization, though keep in mind that they are not upgradable.