newdecline
@newdecline
Front-end-developer

Как прикрепить файл для отправки на почту письма?

Весь интернет прошерстил и не нашёл ответа как пользователь мог бы прикрепить любой файл к письму.
Использую 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>
  • Вопрос задан
  • 664 просмотра
Пригласить эксперта
Ответы на вопрос 1
taliano
@taliano
Cижу здесь потому что не хочу работать. That's it.
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы