Я пытаюсь отправить изображение, используя nodemailer.Однако я пытаюсь отправить изображение, созданное на HTML-странице, созданное пользователем.
Я могу сгенерировать изображение страницы и вставить его на страницу внизу, и я могу отправлять электронные письма, но я не могу отправить изображение по электронной почте.
Это скрипт для создания изображения, а затем отправки его на конечную точку узла:
<script type="text/javascript" src="html2canvas/dist/html2canvas.js"></script>
<script src="https://unpkg.com/jspdf@latest/dist/jspdf.min.js"></script>
<script type="text/javascript">
var doc = new jsPDF();
$(document).ready(function() {
$('#Submit').click(function(){
var doc = new jsPDF();
console.log("HERE");
html2canvas(document.querySelector("#Submit")).then(canvas => {
doc.addImage(canvas, 'JPEG', 10, 10, 160, 200, 'alias', 'NONE', 0);
var dataURL = canvas.toDataURL();
$.ajax({
type: 'POST',
url: 'http://192.168.1.23:8080/sendMail',
data: {"image": dataURL}
});
});
});
});
</script>
<button id="Submit" class="btn-secondary btn-sm back_to_options">Submit</button>
, и это - nodeScript, обрабатывающий отправку электронной почты.
let bodyParser = require('body-parser');
let multer = require('multer');
let cors = require('cors');
let url = require('url');
let express = require('express');
let app = express();
let nodemailer = require('nodemailer');
let fs = require('fs');
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
//app.use(multer());
/**
*
* Function to hopefully send an email :)
*/
app.post("/sendMail", function (req, res) {
// console.log(req.body.doc);
// console.log("\n");
// console.log(req.body.image);
var base64Data = req.body.image.replace(/^data:image\/png;base64,/, "");
// console.log(base64Data);
fs.writeFile("out.png", base64Data, 'base64', function(err) {
if(err) {
console.log(err);
}
});
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'user@gmail.com',
pass: 'pass!'
}
});
let mailOptions = {
from: 'user@gmail.com',
to: 'client@gmail.com',
subject: 'Test',
text: 'It works!',
attachments: [
{
path: req.body.image
},
{
filename: 'out.png',
path: 'out.png'
}
]
};
transporter.sendMail(mailOptions, function(error, info) {
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
});
app.listen(8080);
Но в электронном письме оба изображения пустые.
У кого-нибудь есть идеи относительно того, почему это происходит?