Modelos de e-mail do Visualforce no Salesforce

Publicados: 2021-05-13

Com os modelos de email do Visualforce, os usuários podem enviar emails direcionados e personalizados. Os criadores de modelos podem aproveitar a poderosa linguagem de programação Visualforce para criar um modelo de conteúdo de e-mail.

Os desenvolvedores e administradores podem usar o Visualforce para criar modelos de email. A vantagem de usar o Visualforce em vez dos modelos de email HTML padrão é que o Visualforce oferece a capacidade de executar operações avançadas nos dados enviados a um destinatário.

Todos os modelos de email do Visualforce devem estar contidos em uma única tag <messaging: emailTemplate>. Isso é análogo às páginas regulares do Visualforce definidas em uma única tag <apex: page>.

  • A tag <messaging: emailTemplate> deve conter uma única tag <messaging: htmlEmailBody> ou uma única tag <messaging: plainTextEmailBody>.
  • Vários componentes padrão do Visualforce não estão disponíveis para uso em <messaging: emailTemplate>. Isso inclui <apex: detail>, <apex: pageBlock> e todos os componentes pageBlock relacionados e todos os componentes de entrada, como <apex: form>. Se você tentar salvar um modelo de email do Visualforce com esses componentes, uma mensagem de erro será exibida.

Faça um dos seguintes:

  • Se você tiver permissão para editar modelos públicos, em Configuração, insira Modelos de e-mail na caixa Busca rápida e selecione Modelos de e-mail clássicos.
  • Se você não tem permissão para editar modelos públicos, vá para suas configurações pessoais. Insira Modelos na caixa Busca rápida e selecione Modelos de e-mail ou Meus modelos - o que aparecer.
  • 1. Clique em Novo modelo.
  • 2. Escolha Visualforce e clique em Avançar.
  • 3. Você não pode enviar um email em massa usando um modelo de email do Visualforce.
  • 4. Escolha uma pasta para armazenar o modelo.
  • 5. Para disponibilizar o modelo para uso, marque a caixa de seleção Disponível para uso.
  • 6. Insira um nome em Nome do modelo de email.
  • 7. Se necessário, altere o Nome exclusivo do modelo. Este nome exclusivo se refere ao componente quando você usa a API da plataforma Lightning. Em pacotes gerenciados, este nome exclusivo evita conflitos de nomenclatura em instalações de pacotes. Este nome pode conter apenas sublinhados e caracteres alfanuméricos e deve ser exclusivo em sua organização. Deve começar com uma letra, não incluir espaços, não terminar com sublinhado e não conter dois sublinhados consecutivos. Com o campo Nome exclusivo do modelo, você pode alterar os nomes de certos componentes em um pacote gerenciado e as alterações são refletidas na organização do assinante.
  • 8. Se desejar, escolha um conjunto de caracteres diferente na lista suspensa Codificação.
  • 9. Insira uma descrição para o modelo. O nome e a descrição do modelo são apenas para uso interno.
  • 10. Insira uma linha de assunto para o seu modelo em Assunto do email.
  • 11. Na lista suspensa Tipo de Destinatário, selecione o tipo de destinatário para receber o e-mail criado a partir do modelo.
  • 12. Se desejar, na lista suspensa Tipo relacionado, selecione o objeto do qual o modelo recupera os dados do campo de mesclagem.
  • 13. Clique em Salvar.
  • 14. Na página Exibir e editar modelos de email no Salesforce Classic, clique em Editar modelo.
  • 15. Insira o texto de marcação para seu modelo de email do Visualforce.

NOTA: Se você estiver incluindo uma imagem, recomendamos carregá-la na guia Documentos para fazer referência à cópia da imagem em nosso servidor. Por exemplo:

<apex: image id = ”Logo” value = ”https://yourInstance.salesforce.com/servlet/servlet.ImageServer?
id = 015D0000000Dpwc & oid = 00DD0000000FHaG & lastMod = 127057656800 ″ />

  • 1. Para especificar a versão do Visualforce e a API usada com este modelo de email, clique em Configurações da versão. Se você instalou pacotes gerenciados do AppExchange, também pode especificar qual versão de cada pacote gerenciado usar com este modelo de email. Geralmente, use o valor padrão para todas as versões, para associar o modelo de email à versão mais recente do Visualforce, a API e cada pacote gerenciado. Para manter um comportamento específico, você pode especificar uma versão mais antiga do Visualforce e da API. Para acessar componentes ou funcionalidades que diferem da versão mais recente do pacote, você pode especificar uma versão mais antiga de um pacote gerenciado.
  • 2. Para visualizar os detalhes do modelo, clique em Salvar. Para continuar editando seu modelo, clique em Quick Save. Sua marcação do Visualforce deve ser válida antes que você possa salvar seu modelo.
contratar desenvolvedores de força de vendas

/ ********************* Modelo de email 1 ************* /
Exemplo 1: casos de contato
Destinatário

 <messaging: emailTemplate subject = "Conta e informações de casos {! destinatário.Nome}" destinatárioType = "Contato">
<mensagem: htmlEmailBody>
    <html>
    <head>
    </head>
    <body>
        Caro {! Destinatário.Nome}, <br/>
        Encontre todos os seus casos abertos: <br/>
        <table>
        <tr>
            <th> Número do caso </th>
            <th> Origem do caso </th>
            <th> Status do 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: repeat>
        </table>
    </body>
</html>
</ messaging: htmlEmailBody>
<mensagem: plainTextEmailBody>
Parabéns!
Este é o seu novo modelo de email do Visualforce.
</ messaging: plainTextEmailBody>
</ messaging: emailTemplate>

/ ******************** Modelo de email 2 *************** /
Exemplo 2: Casos de conta
Recipient and RelatedTo

 <messaging: emailTemplate subject = "Casos de conta relacionados a: {! relatedTo.Name}" receiverType = "Contact" relatedToType = "Account">
<mensagem: htmlEmailBody>
    <html>
    <head>
    </head>
    <body>
        Caro {! RelatedTo.Name}, <br/>
        Encontre todos os seus casos abertos: <br/>
        <table>
        <tr>
            <th> Número do caso </th>
            <th> Origem do caso </th>
            <th> Status do 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: repeat>
        </table>
    </body>
</html>
</ messaging: htmlEmailBody>
<mensagem: plainTextEmailBody>
Parabéns!
Este é o seu novo modelo de email do Visualforce.
</ messaging: plainTextEmailBody>
</ messaging: emailTemplate>

Exemplo 3: detalhes das taxas do aluno usando o componente

 <messaging: emailTemplate subject = "Submission Of Student Fees" receiverType = "Contact" relatedToType = "Student__c">
<mensagem: htmlEmailBody>
    <c: StudentFeesDetails stu> </ c: StudentFeesDetails>
</ messaging: htmlEmailBody>
<mensagem: plainTextEmailBody>
Parabéns!
Este é o seu novo modelo de email do Visualforce.
</ messaging: plainTextEmailBody>
</ messaging: emailTemplate>

/ *************** Modelos de e-mail final ************ /

/ ******************** Componente ****************** /

 <apex: component controller = "StudentFeesController" access = "global">
    <Estilo>
    tabela {border: 1px solid # 000;}
        td, th {border: 1px solid # 000}
    </style>
    <apex: attribute name = "stuId" assignTo = "{! studentId}" type = "Id" description = "Student Id" />
    <h1> Suas taxas Deails </h1>
    <mesa>
    <tr>
        <th> Data </th>
        <th> Quantidade </th>
    </tr>
    <apex: repeat value = "{! feesDetails}" var = "fee">
        <tr>
            <td> <apex: outputField value = "{! fee.date__c}" /> </td>
            <td> {! fee.amount__c} </td>
        </tr>
    </ apex: repeat>
    </table>
</ apex: componente>

/************** Classe ******************/

 public class StudentFeesController {
    public Id studentId {get; set;}
    public List <Fees__c> getFeesDetails () {
        return [selecionar id, amount__c, date__c de taxas__c onde student_Id__c =: studentId];
    }
}

/******************* Página **********************/

 <apex: page controller = "SendVFEmailTemplateController">
    <apex: form>
        <apex: pageBlock>
            <apex: pageBlockButtons>
                <apex: commandButton value = "Enviar casos de contato" action = "{! sendCases}" />
                <apex: commandButton value = "Enviar casos de conta" action = "{! sendAccountCases}" />
                <apex: commandButton value = "Enviar detalhes das taxas" action = "{! sendFeeDetails}" />
                
            </ apex: pageBlockButtons>
        </ apex: pageBlock>
    </ apex: form>
</ apex: page>

/******************* Classe ********************/

 public class SendVFEmailTemplateController {
    EmailTemplate et;
    public SendVFEmailTemplateController () {
    
    }
    
    public void sendCases () {
        et = [selecione Id, Name from EmailTemplate onde DeveloperName = 'Account_Cases'];
        Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage ();
        semail.setTargetObjectId ('00328000005cwjF');
        semail.setTemplateId (et.Id);
        Messaging.sendEmail (new Messaging.SingleEmailMessage [] {semail});
    }
    
    public void sendAccountCases () {
        et = [selecione Id, Name from EmailTemplate onde DeveloperName = 'Account_s_Cases'];
        Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage ();
        semail.setTargetObjectId ('00335672305cwjF');
        semail.setTemplateId (et.Id);
        semail.setWhatId ('00123400006azlA');
        Messaging.sendEmail (new Messaging.SingleEmailMessage [] {semail});
    }
    
    public void sendFeeDetails () {
        et = [selecione Id, Name from EmailTemplate onde DeveloperName = 'Student_Fees_Info'];
        Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage ();
        semail.setTargetObjectId ('00335672305cwjF');
        semail.setTemplateId (et.Id);
        semail.setWhatId ('a002320080DGNjx');
        Messaging.sendEmail (new Messaging.SingleEmailMessage [] {semail});        
    }
}

Esperamos que este blog tenha ajudado você a aprender como usar os modelos de email do Visualforce no Salesforce. Se você precisar de serviços de desenvolvimento de força de vendas, entre em contato com nossa equipe de consultoria de força de vendas.