en pt
  • Sobre nós
    • Quem Somos
    • Competências
    • Clientes
    • Certificados
    • Notícias
    • Blog
    • Parceiros
  • Serviços
    • Soluções CRM & CX
    • Soluções Mobile
    • Outsourcing
    • Nearshore
  • Produtos
    • AZAPP
    • Push Gateway
    • SALESFORCE Kickoff Pack
    • Informa - Business By Data
  • Oportunidades
    • Candidatura e Oportunidades
    • Academia
  • Contactos
  • Sobre nós
    • Quem Somos
    • Competências
    • Clientes
    • Certificados
    • Notícias
    • Blog
    • Parceiros
  • Serviços
    • Soluções CRM & CX
    • Soluções Mobile
    • Outsourcing
    • Nearshore
  • Produtos
    • AZAPP
    • Push Gateway
    • SALESFORCE Kickoff Pack
    • Informa - Business By Data
  • Oportunidades
    • Candidatura e Oportunidades
    • Academia
  • Contactos
en pt
   
Apex Outbound Email
Share
Apex Outbound Email
  • Introdução
  • Construção da mensagem
  • Definição de destinatários
  • Remetente
  • Parametrizações adicionais
  • Envio da mensagem
  • Conclusão

Introdução

A crescente necessidade de automatizar o envio de comunicações via email, com origem em Salesforce, leva a que numa mesma organização estes envios possam ser feitos no contexto de diversos processos, com diferentes modelos de mensagem e estruturas de destinatários distintas.

Nesse sentido, torna-se determinante encontrar uma solução que seja suficientemente versátil para fazer face a esta multiplicidade de hipóteses, sobretudo nos casos em que elas coexistam. Apesar de existirem algumas formas de automatizar o envio de emails em Salesforce com recurso a soluções no-code, nenhuma delas oferece tantas opções quanto o envio via Apex.

O objectivo deste artigo passa por mostrar algumas das potencialidades do módulo de Outbound Email do Apex, bem como referir alguns métodos que podem ser utilizados para a construção, definição e envio de mensagens de email.

 

Construção da mensagem

A construção da mensagem inicia-se com a instanciação de um Email object que registará todas as parametrizações e será alvo de envio no final do processo:

O Subject e o Body da mensagem, este último com a possibilidade de ter versões texto e HTML, poderão ser definidos através dos métodos que se seguem:

Em alternativa, e para cobrir os cenários mais comuns, existe também a possibilidade de se recorrer a um template disponível no Salesforce, seja standard ou custom. Para esse efeito, poderá ser utilizado o método renderStoredEmailTemplate da classe Messaging.

Em substituição deste, também podem ser usados os seguintes métodos:

Em qualquer das abordagens devem ser passados como input os seguintes parâmetros:

  • templateId – Id do template definido em Salesforce;
  • targetObjectId – tipicamente é o Id do registo de uma Lead ou de um Contacto, sendo utilizado para preenchimento de campos no template;
  • whatId – tipicamente é o Id do registo de uma Conta ou de uma Oportunidade, sendo utilizado para preenchimento de campos no template.

 

Definição de destinatários

No que diz respeito à definição de destinatários, estão disponíveis os três tipos habitualmente utilizados (To, Cc e Bcc) e podem ser definidos através dos seguintes métodos, que recebem listas de strings como input:

 

Remetente

Por defeito, o remetente do email é o user que invoca o método que fará o envio do email. Nesse sentido, no campo From, serão utilizados o nome e o endereço de email que lhe estão associados.

No entanto, é possível alterar este comportamento, desde logo através da parametrização e utilização dos Organization-Wide Email Addresses, onde ficam definidos nomes e endereços de email que podem ser utilizados como remetentes.

Assim, é possível disponibilizar um conjunto de emails que poderão ser utilizados como remetentes, recorrendo ao método setOrgWideEmailAddressId, que receberá como input o Id do Email Address pretendido (objecto OrgWideEmailAddress).

Se o objectivo for apenas definir o nome indicado no remetente, isso também poderá ser feito.

Nos casos em que o remetente deva ser colocado em Bcc deverá ser utilizado o seguinte método:

 

Parametrizações adicionais

Para definir o endereço de email utilizado quando os destinatários respondem à mensagem deve ser utilizado o seguinte método:

Caso o utilizador que efectua o envio do email tenha definida uma assinatura de email em Salesforce, ela será incluída por defeito na mensagem. Para evitar que isso aconteça, se necessário invocar o método setUseSignature, passando false como input.

Após o envio do email será registada uma Activity associada ao registo referente ao targetObjectId, caso este tenha sido definido. Se esse não for o comportamento pretendido, deverá ser invocado o seguinte método com o input a false:

 

Envio da mensagem

Para efectuar o envio da mensagem, será necessário invocar o método Messaging.sendEmail, que recebe como input uma lista do tipo Messaging.SingleEmailMessage, permitindo o envio de vários emails em simultâneo, e, opcionalmente, um boleano que permite definir se o processo deve ser abortado caso ocorra um erro no envio de um email (true) ou se deve processar o envio dos restantes (false).

Como output, o método Messaging.sendEmail, recebe o resultado do processo de envio para eventual análise.

 

Conclusão

Considerando os métodos e funcionalidades referidas neste breve artigo, facilmente se identificam algumas que não se encontram disponíveis em soluções no-code, fazendo do módulo de Outbound Email do Apex uma opção a considerar sempre que seja necessário implementar soluções onde a complexidade assim o justifique.

Através de algumas linhas de código pode ser desenvolvida uma classe onde seja incluído um método para o processamento de emails que, sendo exposto, poderá ser invocado em qualquer contexto. Adicionalmente, esta componente pode ser combinada com a utilização de Custom Metadata onde pode, entre outras coisas, ser registado um mapa de combinações que, por exemplo, permita identificar o template a utilizar em cada circunstância. Deste modo, é possível construir uma solução bastante completa e escalável para casos em que o envio automático de emails tenha um peso significativo na operação e seja caracterizado por especificidades que não sejam cobertas, integralmente, pela utilização de Flows.

 

Referências

  1. Salesforce Developer: Outbound Email

https://developer.salesforce.com/docs/atlas.en-us.238.0.apexcode.meta/apexcode/apex_forcecom_email_outbound.htm

  1. Salesforce Developer: SingleEmailMessage Methods

https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_classes_email_outbound_single.htm

  1. Salesforce Developer: Email Class

https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_classes_email_outbound_base.htm

  1. Salesforce Developer: Messaging Class

https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_classes_email_outbound_messaging.htm#apex_System_Messaging_sendEmail

 

#Salesforce #wordIT #outboundemail #emailleadgeneration #Salesforcepartner

Voltar ao Blog
Cofinanced by
WorldIT Consulting Services © 2025Privacy Policy CANAL DE DENÚNCIA
Avenida Da Igreja,nº42 - 7º Esq, 1700-239 Lisboa (+351) 217 933 630 (+351) 968 513 098 info@worldit.pt