Весь интернет прошерстил и не нашёл ответа как пользователь мог бы прикрепить любой файл к письму.
Использую Next+Express+Nodemailer
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport(
{
host: 'smtp.mail.ru',
port: 465 ,
secure: true,
auth: {
user: 'xxx@inbox.ru',
pass: 'xxx'
}
},
{
from: `Mailer test sky132010@inbox.ru`
}
);
const mailer = message => {
transporter.sendMail(message, (err, info) => {
if (err) {
return console.log(err);
}
console.log('Email, ', info);
})
};
module.exports = mailer;
const next = require('next');
const express = require('express');
const bodyParser = require('body-parser');
const mailer = require('./nodemailer');
const port = parseInt(process.env.PORT, 10) || 3000;
const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
const handle = app.getRequestHandler();
app
.prepare()
.then(() => {
const server = express();
server.use(bodyParser.json());
server.get('/', (req, res) => {
const actualPage = '/index';
app.render(req, res, actualPage);
});
server.post('/feedback', (req, res) => {
console.log(req.body);
const message = {
to: `sky132010@inbox.ru`,
subject: `Поздравляю, ты отправил письмо!`,
text: `Ура, кароче вот данные указанные при отправке
Имя: ${req.body.name}
Поятовый ящик: ${req.body.email}
Сообщение: ${req.body.message}`,
};
mailer(message);
});
server.get('*', (req, res) => {
return handle(req, res)
});
const listenCallback = err => {
if (err) throw err;
console.log(`> Ready on http://localhost:${port}`)
};
dev ?
server.listen(port, listenCallback) :
server.listen(port, 'localhost', listenCallback);
})
.catch(ex => {
console.error(ex.stack);
process.exit(1);
});
onSubmit={(values, { resetForm } ) => {
resetForm();
setSendForm(true);
fetch(`/feedback`, {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
method: 'POST',
body: JSON.stringify(values)
}).then(() => {
console.log('send');
}).catch((err) => {
console.log('error');
console.log(err);
});
}}
<form
className="form"
id="form"
onSubmit={handleSubmit}
encType="multipart/form-data">
<h3 className="form__header">Заказать дизайн</h3>
<label className='form__label-attach-file'>
Прикрепить бриф +
<input
type="file"
name='file'
className="form__input-attach-file"/>
</label>
<button type='submit' className='form__submit'>Отправить</button>
</form>