Aula 17 – Golang – Fiber – Enviando Emails

Aula 17 – Golang – Fiber – Enviando Emails

Voltar para página principal do site

Todas as aulas desse curso

Aula 16                                               Aula 18

Fiber

Fiber

Pacote Programador Fullstack

Pacote Programador Fullstack

Redes Sociais:

facebook        

Link para a Digital Innovation

Quer aprender python3 de graça e com certificado? Acesse então:

workover

Meus link de afiliados:

Hostinger

Digital Ocean

One.com

Código da aula: Github

Melhore seu NETWORKING

Participe de comunidades de desenvolvedores:

Fiquem a vontade para me adicionar ao linkedin.

E também para me seguir no GITHUB.

Canais do Youtube

Toti

Lofi Music Zone Beats

Backing Track / Play-Along

Código Fluente

Putz!

Vocal Techniques and Exercises

PIX para doações

PIX Nubank

PIX Nubank


Aula 17 – Golang – Fiber – Enviando Emails

Agora vamos enviar um email para a redefinição da senha, para isso, vamos instalar o MailHog.

Ele é um servidor fake de email.

Acesse esse link abaixo para instalar ele de acordo com seu sistema operacional.

https://github.com/mailhog/MailHog/releases 

Ele vai rodar localmente em 0.0.0.0:8025

o servidor SMTP começa na porta 1025
o servidor HTTP começa na porta 8025

Essa porta SMTP 1025  iremos usar no nosso código.

No forgotController.go iremos importar o pacote net/smtp.

Esse é o pacote que vamos usar para enviar emails.

No código abaixo, na parte: message := []byte("Clique <a href=\"" + url + "\">aqui</a> para redefinir sua senha!") foi usado um array de bytes ([]byte) porque a função smtp.SendMail() espera um parâmetro do tipo []byte para o corpo da mensagem de email.

A assinatura da função é a seguinte:

func SendMail(addr string, a Auth, from string, to []string, msg []byte) error

Portanto, ao compor o corpo da mensagem de email, é necessário criar um []byte que contenha os dados da mensagem.

Nesse caso específico, o trecho de código está criando uma mensagem de email com um link HTML.

Ao utilizar []byte, o texto é convertido em um array de bytes, que é o formato esperado pela função smtp.SendMail().

Isso garante que os dados da mensagem sejam tratados corretamente durante o envio por email.

Em resumo, a escolha entre []byte e string depende do contexto e dos requisitos da função ou operação que você está realizando.

No caso de interações com funções ou bibliotecas que esperam []byte, é necessário fazer essa conversão para garantir que os dados sejam tratados corretamente.

fiber-project/controllers/forgotController.go 


package controllers

import (
	"fiber-project/database"
	"fiber-project/models"
	"math/rand"
        "net/smtp"
	"github.com/gofiber/fiber/v2"
)

func Forgot(c *fiber.Ctx) error {
	var data map[string]string

	if err := c.BodyParser(&data); err != nil {
		return err
	}

	token := RandStringRunes(12)
	passwordReset := models.PasswordReset{
		Email: data["email"],
		Token: token,
	}

	database.DB.Create(&passwordReset)

        from := "fluentcode@exemple.com"

        to := []string{
            data["email"],
        }

        url := "http://localhost:3000/reset/" + token

        message := []byte("Clique <a href=\"" + url + "\">aqui</a> para redefinir sua senha!")

        err := smtp.SendMail("0.0.0.0:1025", nil, from, to, message)

        if err != nil {
            return err
        }
	return c.JSON(fiber.Map{
		"message": "success",
	})
}

func RandStringRunes(n int) string {
	var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")

	b := make([]rune, n)
	for i := range b {
		b[i] = letterRunes[rand.Intn(len(letterRunes))]
	}
	return string(b)
}

Para testar, faça a request POST no postman ou qualquer outro software como esse no endpoint forgot.

http://localhost:8000/api/forgot

Agora, no browser, acesse o servidor do MailHog.

0.0.0.0:8025

Veja se o email foi recebido.

Na próxima aula, vamos fazer a parte de redefinição da senha.

Código da aula: Github

Voltar para página principal do blog

Todas as aulas desse curso

Aula 15                                               Aula 18

Redes Sociais:

facebook        

Novamente deixo meus link de afiliados:

Hostinger

Digital Ocean

One.com

É isso!

A gente se vê na próxima. 😉

Até lá!

\o/

Bons estudos. 😉

About The Author
-

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>