mertjr

Başarılı
Katılım
24 Şubat 2024
Mesajlar
381
Beğeniler
205
Nodemailer kullanarak bir başvuru formu hazırlamıştım kendi localhost tarafımda çalışıyor fakat yayınladığım zaman formu gönderdiğimde hata veriyor

Hata:
404 - Dosya veya dizin bulunamadı.
Aradığınız kaynak kaldırılmış, adı değiştirilmiş veya geçici olarak erişime kapalı olabilir.
Bir şeyleri mi gözden kaçırıyorum vs diyorum ama port numarasında mı sorun oluyor acaba hosting sağlayıcım ile mi konuşmam gerek?

[CODE lang="javascript" title="Nodemailer.js"]const nodemailer = require("nodemailer");
const multer = require("multer");
const fs = require("fs");
const bodyParser = require("body-parser");
const express = require("express");
require("dotenv").config();

const app = express();
const PORT = process.env.PORT || 5000;

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

const Storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, "./images");
},
filename: function (req, file, callback) {
const uniqueSuffix = Date.now() + "-" + Math.round(Math.random() * 1e9);
callback(
null,
file.fieldname + "" + uniqueSuffix + "" + file.originalname
);
},
});

const upload = multer({ storage: Storage }).single("image");

app.use(express.static("public"));

app.get("/", (req, res) => {
res.sendFile(__dirname + "/public/staj-basvuru-formu.html");
});

app.post("/sendemail", (req, res) => {
upload(req, res, function (err) {
if (err) {
console.log(err);
return res.status(500).send("Bir hata oluştu");
} else {
const from = req.body.email;
const to = "***@gmail.com";
const subject = Staj Başvuru Formu - ${req.body.isim};
const body = `
İsim: ${req.body.isim}
Mail: ${req.body.email}
Telefon: ${req.body.telefon}
Staj Konusu: ${req.body.stajKonusu}
Staj Süresi: ${req.body.stajSuresi}
Staj Dönemi: ${req.body.stajDonemi}
Staj Dönemi ile ilgili Görüş/Mesaj: ${req.body.comment}
`;
const filePath = req.file.path;

const transporter = nodemailer.createTransport({
service: "gmail",
auth: {
user: process.env.EMAIL_USER,
pass: process.env.EMAIL_PASS,
},
});

const mailOptions = {
from: from,
to: to,
subject: subject,
text: body,
attachments: [
{
path: filePath,
},
],
};

transporter.sendMail(mailOptions, function (error, info) {
if (error) {
console.log("Error:", error);
return res.status(500).send("Mail gönderilemedi");
} else {
console.log("Email sent:", info.response);

fs.unlink(filePath, function (err) {
if (err) {
console.log(err);
return res.status(500).send("Dosya silinemedi");
} else {
console.log("Dosya silindi");
return res.redirect("/staj-form-tamamlandi.html");
}
});
}
});
}
});
});

app.listen(PORT, () => {
console.log(Sunucu ${PORT} numaralı portta çalışıyor.);
});
[/CODE]
 
/public/staj-basvuru-formu.html
/staj-form-tamamlandi.html

Bunun gibi dosyalar belirtilen yollarda bulunuyor mu? Eksiklik var mı? Hostingin Node.js desteklemesi gerekli tabii.
 
Dosya yollarında bir sıkıntı yok çok fazla kontrol ettim de hostingin Node desteklediğini bilmiyorum. Sormam mı lazım bir yerde yazıyor mudur? hosting.com.tr'den almıştım.