нет такого файла или каталога на сервере Parse - облачный код
Я использую сервер Parse и пытаюсь отправить электронное письмо с файлом Html. проблема Я не совсем уверен, как получить доступ к общей папке из облачного кода.
Это ошибка:
ENOENT: нет такого файла или каталога, откройте './public/invoice.html'
Каталог:
│ ├── cloud │ │ ├── functions.js │ │ ├── main.js │ ├── public │ │ ├── invoice.html
fs.readFileSync("../public / invoice.html", "utf8"
А это мой код:
var fs = require('fs');
Parse.Cloud.define("mailSend", function(request, response) {
const apiKey = '4441*****************a47f';
const mailgun = require("mailgun-js");
const DOMAIN = 'user.mailgun.org';
const mg = mailgun({apiKey: apiKey, domain: DOMAIN});
const data = {
from: 'email <email@example.com>',
to: 'email@example.com',
subject: 'Invoice',
html: fs.readFileSync("../public/invoice.html", "utf8") || null
};
mg.messages().send(data, function (error, body) {
console.log(body);
});
});
3 ответа
Попробуй это:
var path = require('path');
var fs = require('fs');
Parse.Cloud.define("mailSend", function(request, response) {
const apiKey = '4441*****************a47f';
const mailgun = require("mailgun-js");
const DOMAIN = 'user.mailgun.org';
const mg = mailgun({apiKey: apiKey, domain: DOMAIN});
const data = {
from: 'email <email@example.com>',
to: 'email@example.com',
subject: 'Invoice',
html: fs.readFileSync(path.join(__dirname, "../public/invoice.html"), "utf8") || null
};
mg.messages().send(data, function (error, body) {
console.log(body);
});
});
Похоже. Проверьте это и попробуйте, Ошибка: ENOENT: нет такого файла или каталога, отключите
Спасибо всем за ответы, этот код мне подходит. Я использовал ejs вместо HTML. вы можете использовать HTML, но вам нужно добавить
var fs = require('fs'); вместо const ejs = require('ejs');
var path = require('path');
const ejs = require('ejs');
const mailgun = require("mailgun-js");
const apiKey = '444**********00a47f';
const DOMAIN = 'user.mailgun.org';
const mg = mailgun({apiKey: apiKey, domain: DOMAIN});
Parse.Cloud.define("SendEmail", function(request, response) {
var orderId = request.params.orderId;
var items = request.params.items;
var details = request.params.details;
var user = request.params.user;
var subject = "Thank You for Your Order #" + orderId;
var orderData = {
user: user,
items: items,
details: details
}
ejs.renderFile(path.join(__dirname, './public/invoice.ejs'), orderData, (err, htmlString) => {
if (err) console.error(err);
let data = {
from: 'app neme <email@gmail.com >',
to: 'email@gmail.com',
subject: subject,
html: htmlString
};
mg.messages().send(data, function (error, body) {
console.log(body);
console.log(prods);
response.success("success send");
});
});
});