mertjr

Başarılı
Katılım
24 Şubat 2024
Mesajlar
381
Beğeniler
205
Nodemailer kullanarak bir form oluşturdum fakat mail gönderen kişi görselde kırmızı ile çizdiğim yer orayı da formda girilen mail adresi gönderdi olarak gösteremedim bir türlü. Bunun bir yolu var mı?

Ekran görüntüsü 2024-04-30 193554.webp


Kod:
 const mailOptpions = {
 from: req.body.mail,
 to: "[email protected]",
 subject: `Staj Başvuru Formu`,
 text: `
 İsim: ${req.body.isim}
 Mail: ${req.body.mail}
 Telefon: ${req.body.telefon}
 Staj Konusu: ${req.body.stajKonusu}
 Staj Süresi: ${req.body.stajSuresi}
 Staj Dönemi: ${req.body.stajDönemi}
 CV Dosyası: ${req.body.cvDosyasi}
 Staj Dönemi ile ilgili Görüş/Mesaj: ${req.body.comment}
 `,
 };

@brkdnmz :)
 
req.body'i ve sonra da mailOptions'ı konsola yazdırıp kontrol ettin mi?

body-parser kullanmıyor olabilir misin? Route'lardan önce onu app.use yapman lazım. Yani middleware'i Express app'inde kullanman lazım.

app.use(bodyParser.json());
 
Kod:
const nodemailer = require('nodemailer');

// Örnek e-posta ayarları.
const transporter = nodemailer.createTransport({
 service: 'Gmail',
 auth: {
 user: '[email protected]',
 pass: 'password'.
 }
});

// Gönderen e-posta adresini dinamik olarak belirleme.
const mailOptions = {
 from: req.body.mail || '[email protected]', // Gönderenin e-posta adresi, eğer req.body.mail tanımlıysa kullanılır, değilse varsayılan olarak '[email protected]' kullanılır.
 to: "[email protected]",
 subject: `Staj Başvuru Formu`,
 text: `
 İsim: ${req.body.isim}
 Mail: ${req.body.mail}
 Telefon: ${req.body.telefon}
 Staj Konusu: ${req.body.stajKonusu}
 Staj Süresi: ${req.body.stajSuresi}
 Staj Dönemi: ${req.body.stajDönemi}
 CV Dosyası: ${req.body.cvDosyasi}
 Staj Dönemi ile ilgili Görüş/Mesaj: ${req.body.comment}
 `,
};

// E-postayı gönderme.
transporter.sendMail(mailOptions, function(error, info){
 if (error) {
 console.log(error);
 } else {
 console.log('Email gönderildi: ' + info.response);
 }
});

Deneyebilir misin?
 
Artı -1 Eksi
req.body'i ve sonra da mailOptions'ı konsola yazdırıp kontrol ettin mi?

body-parser kullanmıyor olabilir misin? Route'lardan önce onu app.use yapman lazım. Yani middleware'i Express app'inde kullanman lazım.

app.use(bodyParser.json());
1714501860035.webp
kullanmamışım :

Kod:
const nodemailer = require('nodemailer');

// Örnek e-posta ayarları.
const transporter = nodemailer.createTransport({
 service: 'Gmail',
 auth: {
 user: '[email protected]',
 pass: 'password'.
 }
});

// Gönderen e-posta adresini dinamik olarak belirleme.
const mailOptions = {
 from: req.body.mail || '[email protected]', // Gönderenin e-posta adresi, eğer req.body.mail tanımlıysa kullanılır, değilse varsayılan olarak '[email protected]' kullanılır.
 to: "[email protected]",
 subject: `Staj Başvuru Formu`,
 text: `
 İsim: ${req.body.isim}
 Mail: ${req.body.mail}
 Telefon: ${req.body.telefon}
 Staj Konusu: ${req.body.stajKonusu}
 Staj Süresi: ${req.body.stajSuresi}
 Staj Dönemi: ${req.body.stajDönemi}
 CV Dosyası: ${req.body.cvDosyasi}
 Staj Dönemi ile ilgili Görüş/Mesaj: ${req.body.comment}
 `,
};

// E-postayı gönderme.
transporter.sendMail(mailOptions, function(error, info){
 if (error) {
 console.log(error);
 } else {
 console.log('Email gönderildi: ' + info.response);
 }
});

Deneyebilir misin?
Bilgisayara geçince deneyeceğim.
Edit: Denedim hala SMTP'ye bağlı olan mailden gidiyor olarak gözüküyor.
 
Son düzenleme:
Bu özellik Express 4.X sürümünden itibaren express.json() ile sağlanmaktadır ve artık body-parser modülüne ihtiyaç duyulmamaktadır diyorlar yani zaten app.use(express.json()); var mış kodda.
Ha, o da olabilir evet. Ben bunu kullanmaya devam ediyorum.