# Email V2

O conector **Email V2** permite o envio de e-mails simples em formato HTML, com ou sem anexos.

## **Parâmetros**

Dê uma olhada nos parâmetros de configuração do conector. Parâmetros suportados por [expressões Double Braces](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/double-braces/overview) estão marcados com `(DB)`.

### **Aba General**

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Account Type</strong></td><td>Tipo de <a href="https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/platform-administration/settings/accounts">conta usada para autenticação</a>. Suportados: <strong>Azure Key</strong> e <strong>Basic</strong>.</td><td>Basic</td><td>String</td></tr><tr><td><strong>Account</strong></td><td>Conta usada para autenticar no servidor de email. Obrigatória se o serviço exigir autenticação. Suportados: <strong>Azure Key</strong> e <strong>Basic</strong>.</td><td>N/A</td><td>String</td></tr><tr><td><strong>SMTP Host</strong> <code>(DB)</code></td><td>Host do servidor SMTP. Exemplo: <code>smtp.gmail.com</code></td><td>smtp.gmail.com</td><td>String</td></tr><tr><td><strong>SMTP Port</strong> <code>(DB)</code></td><td>Porta do servidor SMTP. Geralmente é a 587, mas pode variar.</td><td>587</td><td>Integer</td></tr><tr><td><strong>From</strong> <code>(DB)</code></td><td>Endereço de email do remetente.</td><td>N/A</td><td>String</td></tr><tr><td><strong>To</strong> <code>(DB)</code></td><td>Endereço(s) de email do(s) destinatário(s), separados por vírgula.</td><td>N/A</td><td>String</td></tr><tr><td><strong>CC</strong> <code>(DB)</code></td><td>Endereço(s) de email em cópia, separados por vírgula.</td><td>N/A</td><td>String</td></tr><tr><td><strong>BCC</strong> <code>(DB)</code></td><td>Endereço(s) de email em cópia oculta, separados por vírgula.</td><td>N/A</td><td>String</td></tr><tr><td><strong>Subject</strong> <code>(DB)</code></td><td>Assunto do email.</td><td>N/A</td><td>String</td></tr><tr><td><strong>Charset</strong></td><td>Conjunto de caracteres usado no corpo do email.</td><td>UTF-8</td><td>String</td></tr><tr><td><strong>Content</strong> <code>(DB)</code></td><td>Corpo do email. Suporta templates Freemarker para HTML dinâmico.</td><td>N/A</td><td>String</td></tr><tr><td><strong>Custom Attachments Specification</strong></td><td>Ativa o envio de anexos via array (modo RAW) e oculta o campo de anexo via formulário.</td><td>False</td><td>Booleano</td></tr><tr><td><strong>Attachments</strong></td><td>Anexos do email. Especificados via formulário ou array.</td><td>N/A</td><td>Array of objects</td></tr><tr><td><strong>Authenticated</strong></td><td>Ative se for necessário autenticar no SMTP.</td><td>True</td><td>Booleano</td></tr><tr><td><strong>Is Over TLS</strong></td><td>Ative para enviar a mensagem via TLS.</td><td>True</td><td>Booleano</td></tr><tr><td><strong>Is Over SSL</strong></td><td>Ative para enviar a mensagem via SSL. Disponível apenas quando <strong>Is Over TLS</strong> está desabilitado.</td><td>False</td><td>Booleano</td></tr><tr><td><strong>Socket Port</strong> <code>(DB)</code></td><td>Obrigatório se SSL estiver ativado. Especifica a porta usada. Disponível apenas quando <strong>Is Over SSL</strong> está habilitado.</td><td>N/A</td><td>Integer</td></tr><tr><td><strong>Force TLSv1.2</strong></td><td>Força o uso de TLS 1.2 para conexões seguras com o servidor de e-mail. Disponível apenas quando <strong>Is Over SSL</strong> está habilitado.</td><td>False</td><td>Booleano</td></tr><tr><td><strong>Fail On Error</strong></td><td>Se ativado, interrompe a execução do pipeline ao ocorrer um erro. Se desativado, a execução continua, mas a propriedade <code>"success"</code> será definida como <code>false</code>.</td><td>False</td><td>Booleano</td></tr></tbody></table>

{% hint style="info" %}
Para incorporar imagens no corpo do e-mail, use o prefixo `cid:` no parâmetro **Attachments**, seguido do nome da imagem. Exemplo: `<img src="cid:image.png" />`
{% endhint %}

### **Aba Documentação**

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td>Campo opcional para descrever a configuração do conector e quaisquer regras de negócio relevantes.</td><td>N/A</td><td>String</td></tr></tbody></table>

## **Fluxo de mensagens**

### **Entrada**

Não é necessária nenhuma mensagem de entrada específica, a menos que alguma expressão Double Braces seja usada em um dos campos.

### **Saída**

O conector retorna um objeto JSON como este:

```json
{
  "from": "a@a.com",
  "to": "a@a.com,a@a.com.br",
  "cc": "a@a.com,a@a.com.br",
  "bcc": "a@a.com,a@a.com.br",
  "subject": "Subject",
  "content": "<html>Test Email!</html>",
  "charset": "UTF-8",
  "success": true,
  "attachments": [
    {
      "type": "ATTACHMENT",
      "attachment": "attachment.extension"
    }
  ]
}
```

**Explicação dos campos:**

* `from`: Email do remetente
* `to`: Destinatários
* `cc`: Destinatários em cópia
* `bcc`: Destinatários em cópia oculta
* `subject`: Assunto do email
* `content`: Corpo do email (será truncado se exceder 256 caracteres)
* `charset`: Codificação de caracteres utilizada
* `success`: Indica se o envio da mensagem foi bem-sucedido
* `attachments`: Lista de anexos

{% hint style="info" %}
Os arquivos são manipulados de forma segura em um diretório temporário exclusivo do pipeline.
{% endhint %}

Saiba mais sobre o [processamento de mensagens](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/development-cycle/build-overview/pipelines/messages-processing) na Digibee Integration Platform.

## **Email V2 em ação**

### **Autenticação**

O conector **Email V2** suporta os seguintes métodos de autenticação:

**Basic**

* Use uma conta do tipo Basic, onde o **username** é o e-mail do remetente e a **password** é a senha correspondente.

**OAuth 2**

{% hint style="warning" %}
Atualmente compatível apenas com contas de e-mail Microsoft (Outlook).
{% endhint %}

Para configurar:

* Preencha o campo **From** com o endereço de e-mail do remetente.
* Selecione uma **Azure Key** com as credenciais necessárias.

Internamente, o conector utiliza `client-id`, `client-secret` e `tenant-id` para gerar um token, que é usado junto ao email do remetente para autenticar com o servidor SMTP.

### **Exemplo: Email com anexos e imagem embutida (modo RAW)**

**Configuração:**

* **SMTP Host**: [smtp.gmail.com](http://smtp.gmail.com)
* **SMTP Port**: 587
* **From**: <email@gmail.com> (mesmo email configurado no parâmetro **Account**)
* **To**: <some_other_email@gmail.com>, <second_email@gmail.com>
* **Subject**: Hello
* **Content**:

```html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>Demystifying Email Design</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
<body>
<img src="cid:myImage.png" />
</body>
</html>
```

* **Authenticated**: true
* **Is Over TLS**: true
* **Attachment As Raw**: true
* **Attachments**:

```json
[
  { "type": "INLINE", "attachment": "myImage.png" },
  { "type": "ATTACHMENT", "attachment": "xpto.txt" }
]
```

**Saída:**

```json
{
    "from": "email@gmail.com",
    "to": "some_other_email@gmail.com,second_email@gmail.com",
    "cc":"",
    "bcc": "",
    "subject": "Hello",
    "content": "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv ...TRUNCATED",
    "charset": "UTF-8",
    "success": true,
    "attachments": [
        {"type": "INLINE", "attachment": "myImage.png" },
        {"type": "ATTACHMENT", "attachment": "xpto.txt" }
    ]
}
```

### **Exemplo dinâmico com expressões Double Braces**

Você pode usar [**expressões Double Braces**](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/double-braces/overview) para inserir variáveis dinamicamente na configuração do conector.

Neste exemplo, o componente [**JSON Generator (Mock)**](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/connectors/tools/json-generator) foi configurado com os seguintes dados:

#### **JSON de entrada:**

```json
{
    "remetente": "digibee@gmail.com",
    "destinatario" : "digi@gmail.com",
    "destinatario_cc" : "digi1@gmail.com",
    "destinatario_bcc" : "digi2@gmail.com",
    "port" : "587",
    "host": "smtp.gmail.com",
    "NF": "98787979789",
    "M_VENC" : "13/01/2023"
}
```

Em seguida, o conector **Email V2** foi configurado da seguinte forma:

* **SMTP Host:** `{{ message.host }}`
* **SMTP Port:** `{{ message.port }}`
* **From:** `{{ message.remetente }}`
* **To:** `{{ message.destinatario }}`
* **CC:** `{{ message.destinatario_cc }}`
* **BCC:** `{{ message.destinatario_bcc }}`
* **Subject:** `{{ CONCAT("Nota fiscal ", FORMATDATE(NOW(), "timestamp", "MMMM yyyy", null, "UTC", "pt-BR", "GMT-3")) }}`
* **Charset:** `UTF-8: Eight-bit Unicode (or UCS) Transformation Format`
* **Content:**

```html
<!DOCTYPE html>
<html>
<head>
</head>
<body>

Boa tarde, <br/>
Segue a nota fiscal <a href='${NF}'>(Clique aqui)</a> referente à mensalidade da plataforma – com vencimento em <b>${M_VENC}</b>. <br/>
O pagamento será via <b>transferência bancária</b>, conforme dados informados na nota fiscal. <br/><br/>

Por favor, confirme o recebimento. <br/>
Em caso de dúvidas, estamos à disposição. <br/><br/>

<br/>
<br/>
Att.,<br/>
Relacionamento com o cliente

</body>
</html>
```

### **Tecnologia**

O conector utiliza [Freemarker](https://freemarker.apache.org/docs/dgui_template_exp.html) para geração de conteúdo dinâmico.
