Apex Controller:
public class acctTemplt
{
public Id accountId {get;set;}
public List<Opportunity> getopptys()
{
List<Opportunity> oppty;
oppty = [SELECT Name, StageName FROM Opportunity WHERE Accountid =: accountId];
return oppty;
}
}
Visualforce Component:
Name:OpptyList
<apex:component controller="acctTemplt" access="global">
<apex:attribute name="AcctId" type="Id" description="Id of the account" assignTo="{!accountId}"/>
<table border = "2" cellspacing = "5">
<tr>
<td>Opportunity Name</td>
<td>Opportunity Stage</td>
</tr>
<apex:repeat value="{!opptys}" var="o">
<tr>
<td>{!o.Name}</td>
<td>{!o.StageName}</td>
</tr>
</apex:repeat>
</table>
</apex:component>
Visualforce Email template:
<messaging:emailTemplate subject="List of opportunity" recipientType="User" relatedToType="Account">
<messaging:htmlEmailBody >
Hi,<br/>
Below is the list of opportunities for your account {!relatedTo.Name}.<br/><br/>
<c:OpptyList AcctId="{!relatedTo.Id}" /><br/><br/>
<b>Regards,</b><br/>
{!recipient.FirstName}
</messaging:htmlEmailBody>
</messaging:emailTemplate>
Output: