Plantillas de correo electrónico de Visualforce en Salesforce
Publicado: 2021-05-13Última actualización el 21 de enero de 2022
Con las plantillas de correo electrónico de Visualforce, los usuarios pueden enviar correos electrónicos dirigidos y personalizados. Los creadores de plantillas pueden aprovechar el poderoso lenguaje de programación de Visualforce para crear contenido de correo electrónico con plantillas.
Los desarrolladores y administradores pueden usar Visualforce para crear plantillas de correo electrónico. La ventaja de usar Visualforce sobre las plantillas de correo electrónico HTML estándar es que Visualforce le brinda la capacidad de realizar operaciones avanzadas en los datos que se envían a un destinatario.
Todas las plantillas de correo electrónico de Visualforce deben estar contenidas en una única etiqueta <messaging:emailTemplate>. Esto es análogo a las páginas normales de Visualforce que se definen dentro de una sola etiqueta <apex:page>.
- La etiqueta <messaging:emailTemplate> debe contener una sola etiqueta <messaging:htmlEmailBody> o una sola etiqueta <messaging:plainTextEmailBody>.
- Varios componentes estándar de Visualforce no están disponibles para su uso dentro de <messaging:emailTemplate>. Estos incluyen <apex:detail>, <apex:pageBlock> y todos los componentes de pageBlock relacionados, y todos los componentes de entrada como <apex:form>. Si intenta guardar una plantilla de correo electrónico de Visualforce con estos componentes, aparece un mensaje de error.
Haz una de las siguientes:
- Si tiene permiso para editar plantillas públicas, desde Configuración, ingrese Plantillas de correo electrónico en el cuadro Búsqueda rápida, luego seleccione Plantillas de correo electrónico clásicas.
- Si no tiene permiso para editar plantillas públicas, vaya a su configuración personal. Ingrese Plantillas en el cuadro Búsqueda rápida, luego seleccione Plantillas de correo electrónico o Mis plantillas, cualquiera que aparezca.
- 1. Haga clic en Nueva plantilla.
- 2. Elija Visualforce y haga clic en Siguiente.
- 3. No puede enviar un correo electrónico masivo utilizando una plantilla de correo electrónico de Visualforce.
- 4. Elija una carpeta en la que almacenar la plantilla.
- 5. Para que la plantilla esté disponible para su uso, seleccione la casilla de verificación Disponible para su uso.
- 6. Ingrese un nombre en Nombre de la plantilla de correo electrónico.
- 7. Si es necesario, cambie el Nombre exclusivo de la plantilla. Este nombre exclusivo hace referencia al componente cuando utiliza la API de la plataforma Lightning. En los paquetes administrados, este nombre único evita conflictos de nombres en las instalaciones de paquetes. Este nombre solo puede contener guiones bajos y caracteres alfanuméricos, y debe ser único en su organización. Debe comenzar con una letra, no incluir espacios, no terminar con un guión bajo y no contener dos guiones bajos consecutivos. Con el campo Nombre único de la plantilla, puede cambiar los nombres de ciertos componentes en un paquete administrado y los cambios se reflejan en la organización de un suscriptor.
- 8. Si lo desea, elija un juego de caracteres diferente de la lista desplegable Codificación.
- 9. Introduzca una descripción para la plantilla. Tanto el nombre como la descripción de la plantilla son solo para uso interno.
- 10. Ingrese una línea de asunto para su plantilla en Asunto del correo electrónico.
- 11. En la lista desplegable Tipo de destinatario, seleccione el tipo de destinatario para recibir el correo electrónico creado a partir de la plantilla.
- 12. Si lo desea, en la lista desplegable Relacionado con el tipo, seleccione el objeto del que la plantilla recupera los datos del campo de combinación.
- 13. Haga clic en Guardar.
- 14. En la página Ver y editar plantillas de correo electrónico en Salesforce Classic, haga clic en Editar plantilla.
- 15. Ingrese el texto de marcado para su plantilla de correo electrónico de Visualforce.
NOTA: Si incluye una imagen, le recomendamos que la cargue en la pestaña Documentos para hacer referencia a la copia de la imagen en nuestro servidor. Por ejemplo:
<apex:image id=”Logo” value=”https://yourInstance.salesforce.com/servlet/servlet.ImageServer?
id=015D0000000Dpwc&oid=00DD0000000FHaG&lastMod=127057656800″ />
- 1. Para especificar la versión de Visualforce y la API utilizada con esta plantilla de correo electrónico, haga clic en Configuración de la versión. Si instaló paquetes administrados desde AppExchange, también puede especificar qué versión de cada paquete administrado usar con esta plantilla de correo electrónico. En general, use el valor predeterminado para todas las versiones, para asociar la plantilla de correo electrónico con la versión más reciente de Visualforce, la API y cada paquete administrado. Para mantener un comportamiento específico, puede especificar una versión anterior de Visualforce y la API. Para acceder a componentes o funcionalidades que difieren de la versión más reciente del paquete, puede especificar una versión anterior de un paquete administrado.
- 2. Para ver los detalles de la plantilla, haga clic en Guardar. Para continuar editando su plantilla, haga clic en Guardar rápido. Su marcado de Visualforce debe ser válido antes de poder guardar su plantilla.

/********************* Plantilla de correo electrónico 1 *************/
Ejemplo 1: Casos de contacto
Recipiente
<messaging:emailTemplate subject="Información de cuenta y casos {!recipient.Name}" receiverType="Contact" >
<mensajería:htmlCuerpo de correo electrónico >
<html>
<cabeza>
</cabeza>
<cuerpo>
Estimado {!recipient.Name},<br/>
Encuentre todos sus casos abiertos:<br/>
<tabla>
<tr>
<th>Número de caso</th>
<th>Origen del caso</th>
<th>Estado del caso</th>
</tr>
<apex:repeat value="{!recipient.cases}" var="case">
<tr>
<td>{!case.CaseNumber}</td>
<td>{!caso.Origen}</td>
<td>{!case.Status}</td>
</tr>
</apex:repetir>
</tabla>
</cuerpo>
</html>
</messaging:htmlCuerpo de correo electrónico>
<messaging:plainTextEmailBody>
¡Felicidades!
Esta es su nueva plantilla de correo electrónico de Visualforce.
</messaging:plainTextEmailBody>
</mensajería:plantilla de correo electrónico>
/******************** Plantilla de correo electrónico 2 ***************/
Ejemplo 2: Casos de cuenta
Destinatario y Relacionado con

<messaging:emailTemplate subject="Casos de cuenta relacionados con: {!relatedTo.Name}" receiverType="Contacto"relatedToType="Cuenta">
<mensajería:htmlCuerpo de correo electrónico >
<html>
<cabeza>
</cabeza>
<cuerpo>
Estimado {!relatedTo.Name},<br/>
Encuentre todos sus casos abiertos:<br/>
<tabla>
<tr>
<th>Número de caso</th>
<th>Origen del caso</th>
<th>Estado del caso</th>
</tr>
<apex:repeat value="{!relatedTo.cases}" var="case">
<tr>
<td>{!case.CaseNumber}</td>
<td>{!caso.Origen}</td>
<td>{!case.Status}</td>
</tr>
</apex:repetir>
</tabla>
</cuerpo>
</html>
</messaging:htmlCuerpo de correo electrónico>
<messaging:plainTextEmailBody>
¡Felicidades!
Esta es su nueva plantilla de correo electrónico de Visualforce.
</messaging:plainTextEmailBody>
</mensajería:plantilla de correo electrónico>
Ejemplo 3: Detalles de las tarifas de los estudiantes usando el componente
<messaging:emailTemplate subject="Envío de tarifas de estudiante" receiverType="Contacto"relatedToType="Student__c">
<mensajería:htmlCuerpo de correo electrónico >
<c:StudentTarifasDetalles stu></c:StudentTarifasDetalles>
</messaging:htmlCuerpo de correo electrónico>
<messaging:plainTextEmailBody>
¡Felicidades!
Esta es su nueva plantilla de correo electrónico de Visualforce.
</messaging:plainTextEmailBody>
</mensajería:plantilla de correo electrónico>
/*************** Terminar plantillas de correo electrónico ************/
/******************* Componente ******************/
<apex:componente controlador="StudentFeesController" access="global">
<Estilo>
tabla{borde:1px sólido #000;}
td,th {borde: 1px sólido #000}
</estilo>
<apex:attribute name="stuId" AssignTo="{!studentId}" type="Id" description="Id del estudiante" />
<h1>Detalles de tus tarifas</h1>
<tabla>
<tr>
<th>Fecha</th>
<th>Cantidad</th>
</tr>
<apex:repeat value="{!feesDetails}" var="tarifa" >
<tr>
<td><apex:outputField value="{!fee.date__c}" /></td>
<td>{!fee.amount__c}</td>
</tr>
</apex:repetir>
</tabla>
</apex:componente>
/************** Clase ******************/
clase pública StudentFeesController{
identificación pública Id. de estudiante {get;set;}
lista pública<Tarifas__c> getTarifasDetalles(){
return [seleccione id, cantidad__c, fecha__c de tarifas__c donde estudiante_Id__c =: estudianteId];
}
}
/******************* Página **********************/
<apex:controlador de página="SendVFEmailTemplateController">
<ápice:formulario>
<apex:bloque de página>
<apex:botones de bloque de página>
<apex:commandButton value="Enviar casos de contacto" action="{!sendCases}"/>
<apex:commandButton value="Enviar casos de cuenta" action="{!sendAccountCases}"/>
<apex:commandButton value="Enviar detalles de tarifas" action="{!sendFeeDetails}"/>
</apex:botones de bloque de página>
</apex:bloque de página>
</apex:formulario>
</apex:página>
/******************* Clase ********************/
clase pública SendVFEmailTemplateController{
Plantilla de correo electrónico et;
público SendVFEmailTemplateController(){
}
public void enviarCasos(){
et = [seleccione Id, Nombre de EmailTemplate donde DeveloperName = 'Account_Cases'];
Mensajería.SingleEmailMessage correo electrónico = new Mensajería.SingleEmailMessage ();
correo electrónico.setTargetObjectId('00328000005cwjF');
semail.setTemplateId(et.Id);
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {correo electrónico});
}
public void sendAccountCases(){
et = [seleccione Id, Nombre de EmailTemplate donde DeveloperName = 'Account_s_Cases'];
Mensajería.SingleEmailMessage correo electrónico = new Mensajería.SingleEmailMessage ();
correo electrónico.setTargetObjectId('00335672305cwjF');
semail.setTemplateId(et.Id);
correo electrónico.setWhatId('00123400006azlA');
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {correo electrónico});
}
public void sendFeeDetails(){
et = [seleccione Id, nombre de EmailTemplate donde DeveloperName = 'Student_Fees_Info'];
Mensajería.SingleEmailMessage correo electrónico = new Mensajería.SingleEmailMessage ();
correo electrónico.setTargetObjectId('00335672305cwjF');
semail.setTemplateId(et.Id);
correo electrónico.setWhatId('a002320080DGNjx');
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {correo electrónico});
}
}
Esperamos que este blog le haya ayudado a aprender a utilizar las plantillas de correo electrónico de Visualforce en Salesforce. Si necesita servicios de desarrollo de Salesforce, póngase en contacto con nuestro equipo de consultoría de Salesforce.
