Enviando e-mails no ASP.NET Core \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 14 Horas 

 52 Min 

 50 Seg 

   Tempo restante da oferta: 14 52 50 

  [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) Enviando e-mails no ASP.NET Core  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) [ ASP .NET ](https://www.treinaweb.com.br/blog/categoria/asp-net) [ .NET Core ](https://www.treinaweb.com.br/blog/categoria/net-core) 

# 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.

 [ Wladimilson M. Nascimento ](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento) 6 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/09/enviando-e-mails-no-asp-net-core.png)  

Todo sistema precisa notificar os usuários de algumas ações, sejam notificações visuais na aplicação ou fora dela. Se tratando de notificações fora do sistema, a forma mais comum de realizar isso é através do envio de e-mails.

Para realizar este processo, o .NET possui o namespace [System.Net.Mail](https://docs.microsoft.com/pt-br/dotnet/api/system.net.mail). Mesmo as classes dele não sendo complexas, utilizá-las requer uma série de configurações, algo que pode ser facilitado com o uso da biblioteca [Coravel](https://docs.coravel.net/).

## Coravel

[Coravel](https://docs.coravel.net/) é uma biblioteca .NET Core open-source que permite a implementação de agendamento de tarefas, caching, mensageria e envio de e-mails de forma simples e com pouca configuração.

Ela tem por objetivo ser intuitiva e direta ao ponto, para que o desenvolvedor possa focar nos pontos mais importantes da aplicação. Mesmo a biblioteca fornecendo vários recursos, vamos focar apenas na parte de envio de e-mails, que nos permite:

- Utilizar Razor templates;
- Visualizar um preview;
- Definir as configurações no `appsetings.json`;
- Enviar os e-mails para um arquivo de log para testes;
- Entre outras opções.

## Criando a aplicação

Para exemplificar o uso da biblioteca, crie uma aplicação [ASP.NET Core](https://www.treinaweb.com.br/blog/o-que-e-o-asp-net-core/):

```shell
dotnet new mvc --auth Individual -n exemploenvioemail

```

E adicione nela o pacote `Coravel.Mailer`:

```shell
dotnet add package Coravel.Mailer

```

Agora poderemos definir o envio de e-mail.

## Definindo o tipo do e-mail

O módulo de e-mail da Coravel utiliza “Mailables” para enviar um e-mail. “Mailable” são classes que herdam `Coravel.Mailer.Mail.Mailable` e representam o tipo de e-mail que será enviado, como: “Novo usuário”, “Pedido realizado”, etc.

Neste artigo veremos o envio de e-mail quando um usuário for registrado, assim, iremos definir a classe abaixo:

```csharp
using Coravel.Mailer.Mail;
using Microsoft.AspNetCore.Identity;

namespace ExemploEnvioEmail.Mailables
{
    public class NewUserMailable: Mailable
    {
        private NewUserMailableViewModel _newUser;

        public NewUserMailable(NewUserMailableViewModel newUser) => this._newUser = newUser;

        public override void Build()
        {
            this.To(this._newUser)
                .From(new MailRecipient("contato@treinaweb.com.br", "Treinaweb Cursos"))
                .View("~/Views/Mail/NewUser.cshtml", this._newUser);
        }
    }
}

```

Nela, note que o e-mail é definido no método `Build`, onde em:

```csharp
this.To(this._newUser)

```

É informado o remetente. Ele pode ser indicado como uma string:

```csharp
To("mail@remente.com.br")

```

Como um objeto `MailRecipient`:

```csharp
To(new MailRecipient("mail@remente.com.br", "Remente")

```

Ou como um objeto qualquer:

```csharp
this.To(this._newUser)

```

Neste caso, o objeto precisa possuir uma propriedade pública chamada `Email`. Caso também tenha uma propriedade chamada `Name`, ela será utilizada como rótulo do e-mail. O nosso módulo possui essas propriedades:

```csharp
public class NewUserMailableViewModel
{
    public string Name { get; set; }
    public string Email { get; set; }
    public string CallbackUrl { get; set; }
}

```

Este mesmo padrão pode ser aplicado com o `From`:

```csharp
.From(new MailRecipient("contato@treinaweb.com.br", "Treinaweb Cursos"))

```

Por fim, é informado o template do e-mail:

```csharp
.View("~/Views/Mail/NewUser.cshtml", this._user);

```

Também é possível definir HTML puro utilizando o método `Html`:

```csharp
public override void Build()
{
    this.To(this._user)
        .From(new MailRecipient("contato@treinaweb.com.br", "Treinaweb Cursos"))
        .Html("HTML");
}

```

Para que isso seja feito, `Mailable` precisa definir o tipo `string` ( `Mailable`), se não será gerado um erro.

Não é utilizado neste exemplo, mas também há os métodos:

- `Cc` (cópia);
- `Bcc` (cópia oculta);
- `ReplyTo` (remente de resposta).

Que aceitam uma coleção de `string` ou `MailRecipient`.

Também é importante frisar que o nome da “Mailable” será utilizado para definir o assunto do e-mail. Como os controllers do [ASP.NET Core](https://www.treinaweb.com.br/blog/o-que-e-o-asp-net-core/). A biblioteca remove `"Mailable"` do nome e define o assunto com base nas demais palavras capitalizadas. Por exemplo, para a nossa classe (`NewUserMailable`), o assunto do e-mail será “New User”. Entretanto é possível mudar este comportamento informando o assunto do e-mail no método `Subject`:

```csharp
this.To(this._newUser)
    .From(new MailRecipient("contato@treinaweb.com.br", "Treinaweb Cursos"))
    .Subject($"Bem vindo {this._newUser.Name}")
    .View("~/Views/Mail/NewUser.cshtml", this._newUser);

```

Mas para este artigo, iremos seguir o padrão da biblioteca.

## Criando o template do e-mail

Como vimos no tópico acima, o template do e-mail pode ser um arquivo Razor, definido no método `View`. Este arquivo segue o mesmo padrão de uma View:

```html
@model ExemploEnvioEmail.Models.NewUserMailableViewModel

@{
   Layout = null;
}

                      Bem vindo: @Model.Name

                        Bem vindo @Model.Name!

                        Estamos felizes que agora você faz parte da nossa comunidade. Por favor, clique aqui para confirmar seu e-mail. Ou copie e cole no navegador o link abaixo:

                        @Html.DisplayFor(m => m.CallbackUrl)}

                    Treinaweb | Treinaweb Blog

```

Note que no início do arquivo, indicamos o model:

```razor
@model ExemploEnvioEmail.Models.NewUserMailableViewModel

```

E que não deve ser utilizado o layout padrão da aplicação:

```razor
@{
   Layout = null;
}

```

Por causa disso, no arquivo é definida uma página HTML completa. À frente veremos o uso de um layout.

Com o nosso “Mailable” e View/Template definidos, podemos configurar o módulo de e-mail da Coravel na nossa aplicação.

## Configurando o Coravel.Mailer

Para configurar a **Coravel.Mailer**, é necessário adicionar o seu serviço no método `ConfigureServices`:

```csharp
public void ConfigureServices(IServiceCollection services)
{
    //..Código omitido

    //Habilitando o Coravel.Mailer
    services.AddMailer(this.Configuration);
}

```

E no arquivo **appsettings.json** é necessário indicar qual será o Driver utilizado para enviar os e-mails. Pode ser indicado um servidor SMTP:

```json
"Coravel": {
  "Mail": {
    "Driver": "SMTP",
    "Host": "smtp.mail.to",
    "Port": 2525,
    "Username": "usuario",
    "Password": "senha"
  }
}

```

Ou um arquivo de log:

```json
"Coravel": {
  "Mail": {
    "Driver": "FileLog"
  }
}

```

Neste caso, os e-mails serão enviados para um arquivo chamado **mail.log**, criado na raiz do projeto. Este tipo de configuração é ideal durante o desenvolvimento e testes da aplicação. E será ele que utilizaremos neste artigo.

Por fim, só é necessário enviar o e-mail.

[  ![C# (C Sharp) - Introdução ao ASP.NET Core](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/csharp.svg)   Curso C# (C Sharp) - Introdução ao ASP.NET Core Conhecer o curso ](https://www.treinaweb.com.br/curso/csharp-avancado-introducao-ao-aspnet-core)

## Enviando e-mails com Coravel.Mailer

O serviço do módulo de e-mail da Coravel adiciona nas dependências da aplicação uma instância de `Coravel.Mailer.Mail.IMailer`, desta forma, podemos definir que ela será recebida no construtor do controller:

```csharp
private readonly IMailer _mailer;

public AccountController(
    /* Código omitido */
    IMailer mailer)
{
    /* Código omitido */
    _mailer = mailer;

}

```

Com isso, em qualquer action dele, um e-mail pode ser enviado com o método `SendAsync`:

```csharp
public async Task Register(RegisterViewModel model, string returnUrl = null)
{
    /* Código omitido */
    await this._mailer.SendAsync(new NewUserMailable(
        new NewUserMailableViewModel {
            Name = user.UserName,
            Email = user.Email,
            CallbackUrl = callbackUrl
        }
    ));

    /* Código omitido */
}

```

Agora, sempre que um usuário for registrado na aplicação:

![Cadastro de um usuário](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/09/registro_usuario.gif)

O e-mail enviado será salvo no arquivo **mail.log**:

```verilog
---------------------------------------------
Subject: New User
To: mail@teste.com.br mail@teste.com.br    
From: Treinaweb Cursos contato@treinaweb.com.br
ReplyTo: 
Cc: 
Bcc: 
---------------------------------------------

                      Bem vindo: mail@teste.com.br

                        Bem vindo mail@teste.com.br!

                        Estamos felizes que agora você faz parte da nossa comunidade. Por favor, clique aqui para confirmar seu e-mail. Ou copie e cole no navegador o link abaixo:

                        https://localhost:5001/Account/ConfirmEmail?userId=3a3c71fd-eee3-44c5-b309-4cd55fb2a4df&code=CfDJ8BvCiBo0fQdGsoZDKA5HQm9WOefgiQKTgLo5rDFLbeUAOOFCIfiApXKu%2F6crEeW7wdrgz9h5Z0Y15NdZivlzQ4duSNFcOmbSObG0fdMbGTQ%2ByvC02wR1Av9QFxL%2Fkc5Vg0nwVtsrttBmAeFMHZSxnokR1n0rI9rUyzUpxAYywdpPJOhHW2r6DsSdK0VWp2u6Xe1uWsLDXmSMeMu96g8yZNz18N1SCPHgjNrU8eJdK1wP4Q5vUj%2Bdn21epFqNjaM5Fw%3D%3D

                    Treinaweb | Treinaweb Blog

```

## Coravel CLI

Outro recurso da Coravel que não citei é a sua ferramenta de linha de comando, o [Coravel CLI](https://docs.coravel.net/Cli/). Esta ferramenta é uma [global tool do .NET Core](https://www.treinaweb.com.br/blog/global-tools-no-net-core-2-1/0) que pode ser instalada com o comando abaixo:

```shell
dotnet tool install --global coravel-cli

```

Entre os recursos que ela fornece, há a possibilidade de adicionar ao projeto o módulo de e-mail da biblioteca com o comando abaixo:

```shell
coravel mail install

```

Ele irá adicionar ao projeto a referência `Coravel.Mailer` e os arquivos:

- `~/Views/Mail/_ViewStart.cshtml`: Configuração que permite que as Views utilizem os templates da Coravel;
- `~/Views/Mail/_ViewImports.cshtml`: Configuração que permite o uso dos componentes definidos pela biblioteca;
- `~/Views/Mail/Example.cshtml`: Exemplo de uma View
- `~/Mailables/Example.cs`: Exemplo de um “Mailable”

Mesmo que a biblioteca `Coravel.Mailer` já esteja configurada na nossa aplicação, execute o comando acima. Ao fazer isso, poderemos alterar a nossa View para:

```razor
@model ExemploEnvioEmail.Models.NewUserMailableViewModel

@{
   ViewBag.Heading = "Bem vindo: " + Model.Name;
   ViewBag.Preview = "Obrigado por se registrar no nosso sistema";
}

    Bem vindo @Model.Name!

    Estamos felizes que agora você faz parte da nossa comunidade. Por favor, clique no botão abaixo para confirmar seu registro.
    @await Component.InvokeAsync("EmailLinkButton", new  { text = "Confirmar", url = Model.CallbackUrl })

    Ou copie e cole no navegador o link abaixo:

    @Html.DisplayFor(m => m.CallbackUrl)

@section links
{
    Treinaweb | Treinaweb blog
}

```

Como agora ela está utilizando o template da Coravel, foi possível definir algumas configurações:

- `ViewBag.Heading`: Título do e-mail;
- `ViewBag.Preview`: Preview do e-mail, para aplicações que fornecem isso;
- `section links`: Links exibidos no rodapé do e-mail.

Não foi aplicado no exemplo acima, mas o template da biblioteca também possui a configuração `ViewBag.Footer` (ou `section footer`), para a definição do rodapé. Também é possível definir no arquivo de **appsetting.json**, os atributos:

```json
"Coravel": {
    "Mail": {
        /* Logo da empresa  */
        "LogoSrc": "URL",

        /* Endereço, exibido no rodapé dos e-mails */
        "CompanyAddress": "RUA",

        /* Nome da empresa, exibido no rodaroé dos e-mails */
        "CompanyName": "Empresa",

        /* Cor utilizada no cabeçalho dos e-mails */
        "PrimaryColor": "#FFFFFF"
    }
}

```

Quando informados, esses atributos serão aplicados em todos os e-mails.

## Conclusão

O módulo nativo de envio de e-mails do .NET é bem completo e eficiente, entretanto, a Coravel também fornece um módulo tão bom quanto, além de ser mais simples e cheio de recursos.

Devido a sua facilidade de configuração, sempre que necessitar enviar e-mails na sua aplicação, recomendo que verifique se esta biblioteca atende as suas necessidades. Pode ter certeza que a sua implementação será mais rápida que a implementação do módulo de e-mails do .NET.

Você pode ver o código completo da aplicação no meu [GitHub](https://github.com/wladimilson/ExemploEnvioEmail).

- [ #ASP.NET ](https://www.treinaweb.com.br/blog/tag/asp-net)
- [ #ASP .NET Core ](https://www.treinaweb.com.br/blog/tag/asp-net-core)
- [ #Coravel ](https://www.treinaweb.com.br/blog/tag/coravel)

Autor

 ![Wladimilson M. Nascimento](//secure.gravatar.com/avatar/f0dd442f156a3eacd2880e9cd0eafbd1?d=mm)

## Wladimilson M. Nascimento

 Instrutor, nerd, cinéfilo e desenvolvedor nas horas vagas. Graduado em Ciências da Computação pela Universidade Metodista de São Paulo. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento)  

## 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/2018/08/07161700/gerenciamento-python-400x280.png)  [ Python ](https://www.treinaweb.com.br/blog/categoria/python) 

     4 anos atrás

    ##  [ Empacotando e publicando pacotes Python no PyPi ](https://www.treinaweb.com.br/blog/empacotando-e-publicando-pacotes-python-no-pypi) 

     Neste artigo iremos aprender como funciona o processo de empacotar e distribuir nossos próprios pacotes Python no PyPi.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/07/18090957/PYTHON-EMAIL-400x280.png)  [ Python ](https://www.treinaweb.com.br/blog/categoria/python) 

     7 anos atrás

    ##  [ Enviando email com Python e SMTP ](https://www.treinaweb.com.br/blog/enviando-email-com-python-e-smtp) 

     Neste artigo veremos como enviar emails utilizando Python e SMTP.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/03/29143419/TW-ENTREVISTAS-FELIPE-MOURA-400x280.png)  [ Entrevistas ](https://www.treinaweb.com.br/blog/categoria/entrevistas) 

     9 anos atrás

    ##  [ TW Entrevista 02: Felipe Moura ](https://www.treinaweb.com.br/blog/tw-entrevista-02-felipe-moura) 

     Fizemos uma série de entrevistas com desenvolvedores chamada “TW Entrevista”. O entrevistado de hoje é o Felipe Moura, co-fundador da Nasc e da maior conferência de JavaScript do mundo, a BrazilJS.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/07/PAY-FOR-UNLOCK-400x280.png)  [ Segurança da Informação ](https://www.treinaweb.com.br/blog/categoria/seguranca-da-informacao) 

     6 anos atrás

    ##  [ Termos comuns de segurança: Ransomware ](https://www.treinaweb.com.br/blog/termos-comuns-de-seguranca-ransomware) 

     Você sabia que seus arquivos podem ser criptografados por hackers que exigem dinheiro para liberá-los? Confira neste artigo o Ransomware e como evitá-lo.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/08/NEST-JS-CLASS-VALIDATOR-CLASS-TRANSFORMER-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ Como enviar emails com NestJS e Nodemailer ](https://www.treinaweb.com.br/blog/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.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/04/14232157/capa-produtividade-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     8 anos atrás

    ##  [ Como quintuplicar a produtividade no desenvolvimento de software? ](https://www.treinaweb.com.br/blog/como-quintuplicar-a-produtividade-no-desenvolvimento-de-software) 

     Veja neste artigo algumas dicas que podem te ajudar em sua produtividade no desenvolvimento de software.

     Ler artigo
- ![](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

    ##  [ Trabalhando com eventos no NestJS ](https://www.treinaweb.com.br/blog/trabalhando-com-eventos-no-nestjs) 

     Neste artigo vamos aprender a utilizar os eventos com o NestJS, criando um exemplo onde vamos simular o envio de e-mails.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/09/guia-termos-comuns-seguranca-400x280.png)  [ Guias ](https://www.treinaweb.com.br/blog/categoria/guias) 

     3 anos atrás

    ##  [ Guia de termos comuns de segurança ](https://www.treinaweb.com.br/blog/guia-de-termos-comuns-de-seguranca) 

     Neste guia de segurança veremos alguns dos principais ataques que podem acontecer na web.

     Ler artigo
- ![](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/07/capa-termos-comuns-segurança-400x280.png)  [ Segurança da Informação ](https://www.treinaweb.com.br/blog/categoria/seguranca-da-informacao) 

     6 anos atrás

    ##  [ Termos comuns de segurança ](https://www.treinaweb.com.br/blog/termos-comuns-de-seguranca) 

     Quando falamos sobre a área de Segurança dentro da Tecnologia da Informação, é comum que existam termos que até já ouvimos falar, mas não sabemos ao certo o que significam. Por isso, neste artigo, vamos abordar alguns termos comuns de segurança.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/05/MAN-IN-THE-MIDDLE-400x280.png)  [ Segurança da Informação ](https://www.treinaweb.com.br/blog/categoria/seguranca-da-informacao) 

     7 anos atrás

    ##  [ Termos comuns de segurança: man-in-the-middle ](https://www.treinaweb.com.br/blog/termos-comuns-de-seguranca-man-in-the-middle) 

     Os hackers estão sempre em busca de ataques que os ajudem a chegar em seus objetivos. Um desses ataques é o man-in-the-middle, que veremos neste artigo.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/01/11101814/DJANGO-FORMS-400x280.png)  [ HTML ](https://www.treinaweb.com.br/blog/categoria/html) 

     8 anos atrás

    ##  [ Criando formulários automaticamente com Django ](https://www.treinaweb.com.br/blog/criando-formularios-automaticamente-com-django) 

     Veja neste artigo como utilizar o Django para renderizar um formulário de cadastro de forma automática sem que precisemos escrever HTML.

     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  **14h 52min 50s**

- 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
