Skip to content
Snippets Groups Projects
Commit 78ac3859 authored by Richard Fernando Heise Ferreira's avatar Richard Fernando Heise Ferreira
Browse files

Merge branch 'issue/53-CREATE-contact-email' into 'develop'

Issue #23/CREATE-contact-email

See merge request !54
parents addbcb67 fe56b91b
No related branches found
No related tags found
1 merge request!54Issue #23/CREATE-contact-email
...@@ -45,6 +45,7 @@ import { publicCommentsReplyRoute, commentReplyRouter } from './routes/comment-r ...@@ -45,6 +45,7 @@ import { publicCommentsReplyRoute, commentReplyRouter } from './routes/comment-r
import { publicUserCollectionsRoutes, userCollectionsRoute } from './routes/user-collection.route' import { publicUserCollectionsRoutes, userCollectionsRoute } from './routes/user-collection.route'
import { publicS3, s3Routes } from './routes/s3.route' import { publicS3, s3Routes } from './routes/s3.route'
import { homologationRouter } from './routes/homologation.route' import { homologationRouter } from './routes/homologation.route'
import { contactRoute } from './routes/contact.route'
...@@ -122,6 +123,7 @@ app ...@@ -122,6 +123,7 @@ app
.route('/replyComment', publicCommentsReplyRoute) .route('/replyComment', publicCommentsReplyRoute)
.route('/userCollections', publicUserCollectionsRoutes) .route('/userCollections', publicUserCollectionsRoutes)
.route('/s3', publicS3) .route('/s3', publicS3)
.route('/contact', contactRoute)
//rotas que precisam de token //rotas que precisam de token
app app
.basePath('/api') .basePath('/api')
......
import { ContactService } from "@/services/contact.service";
import { zValidator } from "@hono/zod-validator";
import { Hono } from "hono";
import Container from "typedi";
import { z } from "zod";
const contactService = Container.get(ContactService)
export const contactRoute = new Hono()
.post('/contact',
zValidator('json', z.object({
name: z.string().min(1, 'Name is required'),
email: z.string().email(),
message: z.string().min(10, 'Message should be at least 10 characters long'),
}))
, async (c) => {
try {
const { name, email, message } = await c.req.json();
await contactService.sendContactEmail(email, message, name)
return c.json({ status: 'success', name, email, message });
} catch (error) {
console.error('Error sending contact email:', error);
return c.json({ error: 'Invalid request data' }, 400);
}
});
\ No newline at end of file
...@@ -195,7 +195,6 @@ export class AuthService { ...@@ -195,7 +195,6 @@ export class AuthService {
html: text html: text
}); });
console.log("E-mail enviado:", response); console.log("E-mail enviado:", response);
console.log(userEmail)
} catch (error) { } catch (error) {
console.error("Erro ao enviar e-mail:", error); console.error("Erro ao enviar e-mail:", error);
} }
......
import { Service } from "typedi";
import transporter from "@/mailer";
@Service()
export class ContactService {
async sendContactEmail(email: string, text: string, name: string) {
const message = `
<head>
<style>
.container {
display: block;
text-align: left;
background-color: rgb(240, 240, 240);
width: 90%;
margin: 0 auto;
padding: 30px 30px;
border-radius: 30%,
font-family: Arial, Helvetica, sans-serif;
}
button {
background-color: #00bacc;
color: white;
border: none;
border-radius: 5px;
padding: 10px;
font-size: 16px;
cursor: pointer;
}
.container_msg {
text-align: left;
padding: 0px 20px 0px 20px;
background-color: white;
}
button:hover {
background-color: rgb(7, 29, 65, 0.8);
}
span {
color: #e74c3c;
font-weight: bold;
}
</style>
</head>
<body>
<div class="container" >
<a href="${process.env["URL"]}"></a>
<h1 style="color:#00bacc; font-size: 30px; font-weight: 800; margin-top: 5px; margin-bottom: 5px">Contato de ${name}</h1>
<br>
<p>${text}</p>
</div>
</body>
`
try {
const response = await transporter.sendMail({
from: email,
to: "mecred@c3sl.ufpr.br",
subject: "Contato MECRED",
html: message
});
console.log("E-mail enviado:", response);
console.log()
} catch (error) {
console.error("Erro ao enviar e-mail:", error);
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment