git clone https://github.com/pedroFnseca/SendMail-API.git
cd SendMail-API
npm install
.env
EMAIL_USER="email-para-envio@dominio.com"
EMAIL_PWD_APP="senha-app"
A senha da aplicação é gerada pelo servidor de email e não pode ser alterada.
Caso use um email @gmail neste link tem o passo a passo para configurar o email: https://support.google.com/accounts/answer/185833?hl=pt-BR
node src/index.js
Método | Descrição |
---|---|
POST | Envia um email |
GET | Retorna a lista de emails enviados |
http://localhost:4652/send/text
{
"to": "paraquem@dominio.com",
"subject": "Assunto do email",
"text": "Envio de texto simples"
}
http://localhost:4652/send/html
{
"to": "paraquem@dominio.com",
"subject": "Assunto do email",
"html": "<h1>Envio de html</h1>"
}
500
Verifique se o email e a senha estão corretos.422
verifique se o formato do json está correto.404
verifique se o endpoint e método está correto.200
enviado com sucesso.⚠️ Nota importante: Para o acoplamento funcionar corretamente é necessário que o projeto esteja rodando em um servidor (local ou heroku por exemplo).
⚠️ Atenção: Cuidado para não utilizar a mesma porta que o projeto está rodando 4652.
import axios from "axios"
import { config } from "dotenv"
config() // Carrega as variáveis de ambiente do .env
// Cria uma instância do axios
const api = axios.create({
baseURL: process.env.URL_SERVER_EMAIL = "http://localhost:4652"
})
// Método para enviar e-mail
async function sendMail(data) {
// Verifica se os dados foram passados corretamente
if (!data.to || !data.subject || !data.html) {
throw new Error('Data is not valid')
}
// Envia o e-mail
await api.post('/send/html', {
to: data.to,
subject: data.subject,
html: data.html,
})
// Retorna o resultado
return true
}
// Exporta o método sendMail
export default sendMail
O projeto deve possuir o axios e o dotenv instalados.
import sendMail from 'caminho/services/SendMail.js'
await sendMail({
to: 'email@dominio.om',
subject: 'Assunto do email',
html: '<h1>Mensagem para o usuário</h1>'
})
console.log('E-mail enviado com sucesso 🚀')