@levranger
Front-end Developer

Отправка фотографии (input type="file) с React на Node.js и оттуда с помощью nodemailer на почту?

И так, то что происходит у меня на фронте я показывать не буду, там все ок. Пост запрос на сервер node.js, картинка приходит в виде File объекта (
image: File
lastModified: 1608335833699
lastModifiedDate: Sat Dec 19 2020 01:57:13 GMT+0200 (Восточная Европа, стандартное время) {}
name: "Page 1, object 4-1.jpg"
size: 532480
type: "image/jpeg"
webkitRelativePath: ""

).
Cложности возникают тут
Это мой сервер на ноде
const nodemailer = require('nodemailer');
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');




const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
app.use(cors());



app.post('/api/form', (req,res)=> {

     const {name,lastName,message, email, image} = req.body;
   

    let transporter = nodemailer.createTransport({
        service:'gmail',
        auth:{
            user:'#######@gmail.com',
            pass:'#####'
        }
    });


    let mailOptions = {
        from:`${email}`,
        to:'######@gmail.com',
        subject:'test',
        text:`Name ${name} , Last name ${lastName}, message: ${message}`,
        attachments:[
            {
                filename:'wassup.png',
                contentType:  'image/png',
                content: new Buffer.from(image.split("base64,")[1], "base64"),
                
            }
        ]
    
    }

    transporter.sendMail(mailOptions, function(err,data){
        err?console.log(` Error occurs ${err}`):console.log('email sent');
});
    



});

const PORT = 3001;

app.listen(PORT, ()=> {
    console.log(`server is running at port ${PORT}`)
})

Отправка просто сообщений работает, как пытаюсь отправить картинку все накрывается медным тазом и email не приходит вообще
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
@petter
веб разработчик
image.split("base64,")[1], "base64"

Кажется тут ожидается картинка в виде строки base64, а не File.
Можно попробовать обернуть колбэк в try/catch и посмотреть что упадет с ошибкой
Ответ написан
Ваш ответ на вопрос

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

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