Plantillas de correo electrónico de Visualforce en Salesforce
Publicado: 2021-05-13Con 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 Visualforce para crear contenido de correo electrónico basado en plantillas.
Los desarrolladores y administradores pueden utilizar 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 sola 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 relacionados con pageBlock, 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 y 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, lo 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. Introduzca un nombre en Nombre de la plantilla de correo electrónico.
- 7. Si es necesario, cambie el Nombre exclusivo de la plantilla. Este nombre único se refiere al componente cuando utiliza la API de la plataforma Lightning. En los paquetes administrados, este nombre exclusivo 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 del suscriptor.
- 8. Si lo desea, elija un juego de caracteres diferente de la lista desplegable Codificación.
- 9. Ingrese una descripción para la plantilla. Tanto el nombre de la plantilla como la descripción son solo para uso interno.
- 10. Introduzca 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. Introduzca 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 ha instalado paquetes administrados desde AppExchange, también puede especificar qué versión de cada paquete administrado usar con esta plantilla de correo electrónico. Generalmente, 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 funciones 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 que pueda guardar su plantilla.

/ ********************* Plantilla de correo electrónico 1 ************* /
Ejemplo 1: casos de contacto
Recipiente
<messaging: emailTemplate subject = "Información de cuenta y casos {! destination.Name}" destinationType = "Contact"> <mensajería: htmlEmailBody> <html> <cabeza> </head> <cuerpo> Estimado {! Destinatario.Nombre}: <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 = "{! receiver.cases}" var = "case"> <tr> <td> {! case.CaseNumber} </td> <td> {! case.Origin} </td> <td> {! case.Status} </td> </tr> </ apex: repetir> </table> </body> </html> </ messaging: htmlEmailBody> <mensajería: plainTextEmailBody> ¡Felicidades! Esta es su nueva plantilla de correo electrónico de Visualforce. </ messaging: plainTextEmailBody> </ messaging: emailTemplate>
/ ******************** Plantilla de correo electrónico 2 *************** /
Ejemplo 2: Casos de cuentas
Destinatario y relacionado con

<messaging: emailTemplate subject = "Casos de cuentas relacionados con: {! relatedTo.Name}" destinationType = "Contact" relatedToType = "Account"> <mensajería: htmlEmailBody> <html> <cabeza> </head> <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> {! case.Origin} </td> <td> {! case.Status} </td> </tr> </ apex: repetir> </table> </body> </html> </ messaging: htmlEmailBody> <mensajería: plainTextEmailBody> ¡Felicidades! Esta es su nueva plantilla de correo electrónico de Visualforce. </ messaging: plainTextEmailBody> </ messaging: emailTemplate>
Ejemplo 3: Detalles de las tarifas de los estudiantes mediante el componente
<messaging: emailTemplate subject = "Envío de tarifas para estudiantes" destinationType = "Contact" relatedToType = "Student__c"> <mensajería: htmlEmailBody> <c: StudentFeesDetails stu> </ c: StudentFeesDetails> </ messaging: htmlEmailBody> <mensajería: plainTextEmailBody> ¡Felicidades! Esta es su nueva plantilla de correo electrónico de Visualforce. </ messaging: plainTextEmailBody> </ messaging: emailTemplate>
/ *************** Finalizar plantillas de correo electrónico ************ /
/******************* Componente ******************/
<apex: component controller = "StudentFeesController" access = "global"> <Estilo> table {border: 1px solid # 000;} td, th {borde: 1px sólido # 000} </style> <apex: attribute name = "stuId" assignTo = "{! studentId}" type = "Id" description = "Student Id" /> <h1> Sus honorarios se arruinan </h1> <tabla> <tr> <th> Fecha </th> <th> Importe </th> </tr> <apex: repeat value = "{! RatesDetails}" var = "fee"> <tr> <td> <apex: outputField value = "{! fee.date__c}" /> </td> <td> {! fee.amount__c} </td> </tr> </ apex: repetir> </table> </ apex: componente>
/************** Clase ******************/
StudentFeesController de clase pública { ID pública IDEstudiante {get; set;} Public List <Fees__c> getFeesDetails () { return [seleccione id, cantidad__c, fecha__c de tarifas__c donde id_estudiante__c =: id_estudiante]; } }
/******************* Página **********************/
<apex: page controller = "SendVFEmailTemplateController"> <apex: formulario> <apex: pageBlock> <apex: pageBlockButtons> <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: pageBlockButtons> </ apex: pageBlock> </ apex: form> </ apex: page>
/******************* Clase ********************/
clase pública SendVFEmailTemplateController { EmailTemplate et; public SendVFEmailTemplateController () { } public void sendCases () { et = [seleccione Id, Nombre de EmailTemplate donde DeveloperName = 'Account_Cases']; Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage (); semail.setTargetObjectId ('00328000005cwjF'); semail.setTemplateId (et.Id); Messaging.sendEmail (nuevo Messaging.SingleEmailMessage [] {semail}); } public void sendAccountCases () { et = [seleccione Id, Nombre de EmailTemplate donde DeveloperName = 'Account_s_Cases']; Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage (); semail.setTargetObjectId ('00335672305cwjF'); semail.setTemplateId (et.Id); semail.setWhatId ('00123400006azlA'); Messaging.sendEmail (nuevo Messaging.SingleEmailMessage [] {semail}); } public void sendFeeDetails () { et = [seleccione Id, Nombre de EmailTemplate donde DeveloperName = 'Student_Fees_Info']; Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage (); semail.setTargetObjectId ('00335672305cwjF'); semail.setTemplateId (et.Id); semail.setWhatId ('a002320080DGNjx'); Messaging.sendEmail (nuevo Messaging.SingleEmailMessage [] {semail}); } }
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.