Modelos de email do Visualforce no Salesforce

Publicados: 2021-05-13

Última atualização em 21 de janeiro de 2022

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 conteúdo de email com modelo.

Desenvolvedores e administradores podem usar o Visualforce para criar modelos de email. A vantagem de usar o Visualforce em relação aos modelos de email HTML padrão é que o Visualforce oferece a capacidade de realizar operações avançadas em 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 a páginas regulares do Visualforce sendo 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>. Eles incluem <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 email na caixa Busca rápida e selecione Modelos de email clássicos.
  • Se você não tiver permissão para editar modelos públicos, acesse suas configurações pessoais. Insira Modelos na caixa Busca rápida e selecione Modelos de email 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. Digite um nome em Nome do modelo de e-mail.
  • 7. Se necessário, altere o Nome Exclusivo do Modelo. Esse nome exclusivo se refere ao componente quando você usa a API da plataforma Lightning. Em pacotes gerenciados, esse nome exclusivo evita conflitos de nomenclatura em instalações de pacotes. Esse 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 determinados componentes em um pacote gerenciado e as alterações são refletidas na organização de um 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 seu modelo em Assunto do e-mail.
  • 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 Relacionado ao tipo, 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 de 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, à API e a 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 diferentes da versão de pacote mais recente, 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 Salvar rápido. Sua marcação do Visualforce deve ser válida antes que você possa salvar seu modelo.
contratar desenvolvedores da força de vendas

/************************ Modelo de e-mail 1 *************/
Exemplo 1: casos de contato
Destinatário

 <messaging:emailTemplate subject="Informações de conta e casos {!recipient.Name}" destinatárioType="Contato" >
<messaging:htmlEmailBody >
    <html>
    <cabeça>
    </head>
    <corpo>
        Prezado {!recipient.Name},<br/>
        Encontre todos os seus casos abertos:<br/>
        <tabela>
        <tr>
            <th>Número do caso</th>
            <th>Origem do caso</th>
            <th>Status do caso</th>
        </tr>
        <apex:repeat value="{!recipient.cases}" var="case">
        <tr>
            <td>{!case.CaseNumber}</td>
            <td>{!case.Origin}</td>
            <td>{!case.Status}</td>
        </tr> 
        </apex:repeat>
        </table>
    </body>
</html>
</messaging:htmlEmailBody>
<messaging:plainTextEmailBody>
Parabéns!
Este é seu novo modelo de email do Visualforce.
</messaging:plainTextEmailBody>
</messaging:emailTemplate>

/******************** Modelo de e-mail 2 ****************/
Exemplo 2: casos de conta
Destinatário e Relacionado a

 <messaging:emailTemplate subject="Casos de conta relacionados a : {!relatedTo.Name}" destinatárioType="Contato" relatedToType="Conta">
<messaging:htmlEmailBody >
    <html>
    <cabeça>
    </head>
    <corpo>
        Prezado {!relatedTo.Name},<br/>
        Encontre todos os seus casos abertos:<br/>
        <tabela>
        <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>
<messaging:plainTextEmailBody>
Parabéns!
Este é seu novo modelo de email do Visualforce.
</messaging:plainTextEmailBody>
</messaging:emailTemplate>

Exemplo 3: Detalhes das taxas do estudante usando o componente

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

/**************** Fim dos modelos de e-mail ************/

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

 <apex:component controller="StudentFeesController" access="global">
    <Estilo>
    tabela{border:1px solid #000;}
        td,th {borda: 1px sólido #000}
    </style>
    <apex:attribute name="stuId" assignTo="{!studentId}" type="Id" description="Student Id" />
    <h1>Suas Taxas</h1>
    <tabela>
    <tr>
        <th>Data</th>
        <th>Valor</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:component>

/************** Aula ******************/

 public class StudentFeesController{
    public Id studentId {get;set;}
    public List<Fees__c> getFeesDetails(){
        return [selecione id, valor__c, data__c de fees__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="Send Account Cases" action="{!sendAccountCases}"/>
                <apex:commandButton value="Enviar detalhes das taxas" action="{!sendFeeDetails}"/>
                
            </apex:pageBlockButtons>
        </apex:pageBlock>
    </apex:form>
</apex:page>

/******************* Aula ********************/

 classe pública 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.