Como enviar emails com NestJS e Nodemailer \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 18 Horas 

 23 Min 

 14 Seg 

   Tempo restante da oferta: 18 23 14 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Como enviar emails com NestJS e Nodemailer  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) [ Node ](https://www.treinaweb.com.br/blog/categoria/node-js) 

# Como enviar emails com NestJS e Nodemailer

 Neste artigo vamos aprender como enviar emails utilizando o NestJS e o Nodemailer, um dos módulos mais utilizados do ecossistema NodeJS.

 [ Wesley Gado ](https://www.treinaweb.com.br/blog/autor/wesley-gado) 4 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/08/NEST-JS-CLASS-VALIDATOR-CLASS-TRANSFORMER.png)  

Neste artigo vamos aprender a como enviar emails com NestJs e o [Nodemailer](https://nodemailer.com/about/ "Nodemailer"), um dos módulos de envio de email mais utilizados do ecossistema NodeJS.

Antes de começar, é importante que você já saiba como criar um projeto utilizando o NestCLI, para isto, você pode acessar o artigo “[O que é NestJS?](https://www.treinaweb.com.br/blog/o-que-e-nestjs)” onde explicamos o passo a passo para criar um projeto do zero utilizando o [NestCLI](https://docs.nestjs.com/cli/overview).

[  ![Node.js - Fundamentos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/node-js.svg)   Curso Node.js - Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/nodejs-fundamentos)

### Instalando Template Engine e Nodemailer

Primeiramente, vamos criar um projeto chamado chamado ‘nest-mail’, e instalar os pacotes necessários para aplicação, que serão:

- HandleBars: uma [template engine](https://www.treinaweb.com.br/blog/o-que-e-template-engine) para a criação da view, a interface que vamos utilizar para criar o formulário de envio de email.

```jsx
npm install hbs

```

- Nodemailer: um dos módulos do ecossistema node mais utilizados para envio de email que suporta, por exemplo, protocolo SMTP e outras opções o tornando versátil e fácil de utilizar.

```jsx
npm install --save @nestjs-modules/mailer nodemailer
npm install --save-dev @types/nodemailer

```

### Criando Formulário para envio de email com NestJS

Se você não tem nenhum conhecimento de NestJS, aconselho seguir o artigo “[criando primeiro crud com NestJS](https://www.treinaweb.com.br/blog/criando-o-primeiro-crud-com-nestjs)” para facilitar o entendimento do restante do artigo, garanto que será um aprendizado importante.

Neste momento vamos criar a view do formulário, onde teremos um campo para o email e o campo da mensagem, conforme a seguir:

![Formulário de envio de emails com NestJS](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/09/formulario-envio-email.png)

Teremos então uma pasta `views` na raiz do projeto e dentro dela o arquivo `forms.hbs`, com o seguinte conteúdo:

```jsx

  Envio de Email

          Envio de emails Utilizando NestJS

      Enviar Email

```

### Configurando a Template Engine

Após a criação do arquivo de view, precisamos configurar o arquivo `main.ts` do projeto para a aplicação localizar onde estará o arquivo da view, com as configurações a seguir:

```tsx
import { NestFactory } from '@nestjs/core';
import { NestExpressApplication } from '@nestjs/platform-express';
import { join } from 'path';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.setBaseViewsDir(join(__dirname, '..', 'views'));
  app.setViewEngine('hbs');
  await app.listen(3000);
}
bootstrap();

```

- **app.setBaseViewsDir(),** é onde configuramos o diretório que estará as views.
- **app.setViewEngine()**, é onde configuramos o Template Engine a ser utilizado.

### Configurando as rotas

Com o formulário criado, vamos desenvolver as rotas da aplicação, tanto a rota para acessar a página do formulário quanto a rota que enviará os dados para o serviço de email utilizando o **Nodemailer**.

As rotas são de responsabilidade do arquivo `app.controller.ts`, conforme abaixo:

```tsx
import { Controller, Get, Post, Render, Request } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get('email')
  @Render('form')
  exibirForm() {
    //
  }

  @Post('enviar-email')
  enviarEmail(@Request() req) {
    return this.appService.enviarEmail(
      req.body.email,
      req.body.mensagem,
    );
  }
}

```

Aqui temos então as duas rotas configuradas, a rota **GET**, que ao acessarmos [localhost:3000/email](http://localhost:3000/email) será renderizado a view `form.hbs`, desta forma exibindo o formulário, e então a rota **POST** “enviar-email”, que é a rota responsável por enviar os dados do corpo da requisição para o serviço de email. Veja que temos o `appService` no construtor, e na rota `enviar-email` executamos o método `this.appService.enviarEmail` onde passamos então o email do destinatário e a mensagem.

[  ![TypeScript - Fundamentos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/typescript.svg)   Curso TypeScript - Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/typescript-fundamentos)

### Configurando os dados do email

Vamos criar este método no arquivo `app.service.ts`:

```tsx
import { MailerService } from '@nestjs-modules/mailer';
import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  constructor(private mailerService: MailerService) {}

  async enviarEmail(email: string, mensagem: string) {
    await this.mailerService.sendMail({
      to: email,
      from: 'wesley.gado@treinaweb.com.br',
      subject: 'Enviando Email com NestJS',
      html: `${mensagem}`,
    });
  }
}

```

Há algumas questões que merecem atenção aqui, primeiro é em relação ao módulo `@nestjs-modules/mailer`, lembra que instalamos ele logo no começo do artigo?

Então, aqui que ele será usado, vamos importar o módulo e então criar o `mailerService` passando no construtor, dessa forma, quando o método `enviarEmail` for executado, vamos chamar o método `sendMail` do módulo, nele, podemos configurar os dados do email a ser enviado.

Neste exemplo temos o básico para o envio do email, as propriedades:

- **to**: para quem será enviado, aqui devemos passar o destinatário que recebemos como parâmetro;
- **from**: neste caso sendo o remetente do email;
- **subject**: o assunto do email;
- **html**: apontando que o corpo do email será um html e o seu conteúdo, também há a possibilidade de termos uma view específica para o envio do email personalizada ou até enviar um simples texto, como podemos ver na [documentação do Nodemailer](https://nodemailer.com/about/).

### Utilizando o mailgun como serviço de envio de emails

Ok, temos o formulário, as rotas e as características do email em si, mas como vamos enviar esse email? Agora precisamos configurar um serviço de envio de email, para fins de exemplo, vamos utilizar a conta de testes gratuitas do [mailgun](https://www.mailgun.com/), nele é possível testarmos a nossa aplicação de forma prática. Entre no site do [mailgun](https://www.mailgun.com/), clique em “Get Started”, preencha os dados e deixe desabilitada a checkbox “add payment info” para não cadastrar um método de pagamento, conforme abaixo:

![Desabilitando meio de pagamento mailgun](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/09/mailgun-dados-pagamento.png)

Agora basta selecionar “i’m not a robot” e clicar em “create account”. Sua conta estará criada! Só precisamos localizar o usuário e senha, para isto clique na opção sending e no primeiro link com o prefixo sandbox:

![Menu Mailgun](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/09/mailgun-sendbox.png)

Perfeito, agora basta clicar em SMTP e pegar os dados que serão exibidos, de forma similar como a imagem a seguir:

![Dados de autenticação do Mailgun](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/09/mailgun-dados-autenticacao.png)

Obs: ao utilizarmos o mailgun no ambiente de testes, existe a limitação de que precisamos previamente cadastrar os emails de destino. Basta adicionar os emails e confirmar que eles estarão aptos a receber os emails enviados pelo mailgun (ou seja, você terá que ter acesso a esses emails).

![Autorização de Emails Destinatários Mailgun](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/09/mailgun-cadastro-emails-remetente.png)

### Configurando o Nodemailer com Mailgun

Com os dados do serviço de envio de email, vamos configurar o Nodemailer da seguinte forma, no arquivo `app.module.ts` da aplicação vamos importar o `MailerModule` e configurar o Nodemailer com os dados do mailgun:

```tsx
import { MailerModule } from '@nestjs-modules/mailer';
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [
    MailerModule.forRoot({
      transport: {
        host: 'smtp.mailgun.org', //host smtp
        secure: false, //regras de segurança do serviço smtp
        port: 587, // porta
        auth: { //dados do usuário e senha
          user: 'seu-usuario',
          pass: 'sua-senha',
        },
        ignoreTLS: true,
      },
      defaults: { // configurações que podem ser padrões
        from: '"',
      },
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

```

Para ver exemplos e outras opções de configurações mais personalizadas, você pode acessar a [documentação do @nestjs-modules/mailer](https://nest-modules.github.io/mailer/docs/mailer.html).

### Testando a aplicação

Perfeito, agora vamos executar a aplicação com o comando `npm run start` , entrar pelo navegador em [localhost:3000/email](http://localhost:3000/email) , e enviar o seguinte email:

![Enviando Email Pela Aplicação](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/09/formulario-teste-envio-email.png)

Sucesso! Agora verifique se o email foi enviado na sua caixa de entrada, lembrando que devemos passar um email previamente cadastrado no mailgun.

![Teste de recebimento de email com sucesso](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/09/email-recebido.png)

[  ![Nest.js - Fundamentos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/nest-js.svg)   Curso Nest.js - Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/nestjs-fundamentos)

### Conclusão

Neste artigo aprendemos a criar uma aplicação simples de envio de emails utilizando o NestJS com o módulo Nodemailer e configurar de forma prática um serviço de envio de emails, o mailgun. Com este conhecimento podemos agregar muitos recursos as mais diversas aplicações, como: processos de recuperação de senha, confirmações de cadastros, campanhas de email marketing entre outras possibilidades!

Ah, antes que me esqueça, você pode conferir o código da aplicação de exemplo deste artigo no [repositório do github](https://github.com/wesleygado/artigo-nestjs-nodemailer) 😀

Nesse artigo vimos como enviar emails a partir de uma aplicação NestJS, mas isso é apenas o começo, existem muitos outros recursos e funcionalidades disponíveis neste incrível framework, caso queira aprender mais sobre NestJS saiba que aqui na [TreinaWeb](https://www.treinaweb.com.br/) nós temos o curso \[https://www.treinaweb.com.br/curso/nestjs-fundamentos\] que possui **02h07 de videos** e um total de **18 exercícios**. Conheça também nossos outros [cursos de TypeScript](https://www.treinaweb.com.br/busca?q=TypeScript).

Veja quais são os tópicos abordados durante o curso de NestJS - Fundamentos:

- Conhecendo a estrutura;
- Utilizando Nest CLI;
- Entendendo Rotas, Controllers e Views;
- Conexão com banco de dados;
- Usando TypeORM;
- Template Engine.

- [ #NodeJS ](https://www.treinaweb.com.br/blog/tag/nodejs)
- [ #Back-end ](https://www.treinaweb.com.br/blog/tag/back-end)
- [ #TypeScript ](https://www.treinaweb.com.br/blog/tag/typescript)
- [ #NestJS ](https://www.treinaweb.com.br/blog/tag/nestjs)
- [ #JavaScipt ](https://www.treinaweb.com.br/blog/tag/javascipt)

Autor

 ![Wesley Gado](//secure.gravatar.com/avatar/1b770ca482a7232b1885881430a592bb?d=mm)

## Wesley Gado

 Formado em Análise e Desenvolvimento de Sistemas pelo Instituto Federal de São Paulo, atuou em projetos como desenvolvedor Front-End. Nas horas vagas grava Podcast e arrisca uns três acordes no violão. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/wesley-gado)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/05/NEST-JS-UPLOAD-ARQUIVOS-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     3 anos atrás

    ##  [ Guia do framework NestJS ](https://www.treinaweb.com.br/blog/guia-do-framework-nestjs) 

     Neste guia do framework NestJS vamos fazer um compilado de tópicos úteis sobre o framework, desde criar um projeto básico até autenticação.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/04/17103938/reuniao-de-orcamento-400x280.jpg)  [ Vendas ](https://www.treinaweb.com.br/blog/categoria/vendas) 

     7 anos atrás

    ##  [ Como fazer uma reunião de orçamento aumentar as chances do cliente fechar negócio ](https://www.treinaweb.com.br/blog/como-fazer-uma-reuniao-de-orcamento-aumentar-as-chances-do-cliente-fechar-negocio) 

     A maioria dos freelancers e empresas cometem o erro de enviar um orçamento por email. Vou te ensinar a orçar do jeito certo pra fechar clientes.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2025/01/NOVIDADES-REACT-19-400x280.jpg)  [ Desenvolvimento Front-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-front-end) 

     2 anos atrás

    ##  [ 4 Novidades do React 19 ](https://www.treinaweb.com.br/blog/4-novidades-do-react-19) 

     Descubra 4 novidades do React 19, incluindo novos hooks, otimizações de performance e uso prático das Actions para formulários.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/05/24102227/laravel-request-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     8 anos atrás

    ##  [ Principais métodos para obtenção de parâmetros da Request no Laravel ](https://www.treinaweb.com.br/blog/principais-metodos-para-obtencao-de-parametros-da-request-no-laravel) 

     Aprenda nesse artigo como obter dados enviados na requisição. Veremos desde como pegar a instância da Request até métodos avançados para obtenção de parâmetros passados via GET, POST e como trabalhar com arquivos.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/09/enviando-e-mails-no-asp-net-core-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     6 anos atrás

    ##  [ Enviando e-mails no ASP.NET Core ](https://www.treinaweb.com.br/blog/enviando-e-mails-no-asp-net-core) 

     O .NET possui um módulo nativo para o envio de e-mails. Entretanto, veja como facilitar este processo utilizando a biblioteca Coravel.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/07/fluxo-de-autenticacao-baseado-em-jwt-400x280.png)  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

     5 anos atrás

    ##  [ Fluxo de autenticação baseado em JWT ](https://www.treinaweb.com.br/blog/fluxo-de-autenticacao-baseado-em-jwt) 

     Neste artigo iremos aprender de teórica como é o fluxo de autenticação baseado em JWT dentro de uma API REST.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/05/GUIA-HTML-400x280.jpg)  [ Desenvolvimento Front-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-front-end) 

     4 anos atrás

    ##  [ Guia da linguagem HTML ](https://www.treinaweb.com.br/blog/guia-da-linguagem-html) 

     Esse guia é perfeito pra você que está começando ou quer entender melhor como podemos trabalhar com a linguagem HTML .

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/06/NODE-SQUELIZE-MYSQL-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     5 anos atrás

    ##  [ Usando Sequelize ORM com Node e Express ](https://www.treinaweb.com.br/blog/usando-sequelize-orm-com-node-e-express) 

     Vamos aprender a configurar uma aplicação com banco de dados MySQL usando Sequelize ORM com Node.js e Express.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/12/enviando-e-exibindo-dados-em-templates-com-jinja2-400x280.png)  [ Flask ](https://www.treinaweb.com.br/blog/categoria/flask) 

     6 anos atrás

    ##  [ Como enviar e exibir dados em templates com Jinja2 ](https://www.treinaweb.com.br/blog/como-enviar-e-exibir-dados-em-templates-com-jinja2) 

     Veja neste artigo como enviar e exibir dados com Jinja2.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/08/19184020/symfony-repositorio-privado-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     7 anos atrás

    ##  [ Como criar repositórios privados do Symfony Flex ](https://www.treinaweb.com.br/blog/como-criar-repositorios-privados-do-symfony-flex) 

     Aprenda como criar repositórios do Symfony Flex gratuitamente para guardar os Recipes usados em seus projetos privados.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/04/13172051/CORS-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     7 anos atrás

    ##  [ O que é CORS e como resolver os principais erros ](https://www.treinaweb.com.br/blog/o-que-e-cors-e-como-resolver-os-principais-erros) 

     Nesse artigo vamos entender o que é CORS, quais os principais erros relacionados com ele, suas principais causas e como resolve-los corretamente.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/09/10155418/recipes-symfony-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     7 anos atrás

    ##  [ Como criar recipes do Symfony Flex e enviar para o repositório ](https://www.treinaweb.com.br/blog/como-criar-recipes-do-symfony-flex-e-enviar-para-o-repositorio) 

     Aprenda a criar recipes do Symfony Flex personalizados para automatizar as configurações de bundles. Além disso, o post também mostra como enviar o recipe para o repositório e testar na prática.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **18h 23min 14s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
