Nodemailer 'form' değişmiyor

  • Konuyu başlatan Konuyu başlatan mertjr
  • Başlangıç Tarihi Başlangıç Tarihi
  • Mesaj Mesaj 19
  • Görüntüleme Görüntüleme 450

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ı?



Kod:
 const mailOptpions = {
 from: req.body.mail,
 to: "mertduyar16@gmail.com",
 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
 

Bir de PDF'ya da Excel okuma özelliği yok mu Nodemailer'ın?
 
Kullanıcının tarayıcıdan yüklediği dosyayı, sunucuya yollayacağınız istekle beraber gönderebilirsiniz. Bunu sormuş olabileceğinizi düşündüm.
Kullanıcı yükleyecek evet.

@mertjr, req.body'yi loglamanız isteniyor aslında. : )

Kontrol ederiz bir, belki işler yolunda gitmemiştir ve boş bir objeden ibarettir.

Her şey yolunda gözüküyorken gelen mailde neden böyle gözükmüyor anlamış değilim.
 
Son düzenleme:

[CODE lang="html" title="form"] <div class="row">
<div id="form-tagline" class="col-md-4">
<div class="form-tagline">
<i class="fa fa-envelope fa-5x"></i>
<h2>Staj Başvuru Formu</h2>
</div>
</div>

<div id="form-content" class="col-md-8">
<form class="contact-form" action="">
<div class="row form-group">
<div class="col-sm-3">
<input type="hidden" />
<label id="name-label" class="control-label" for="isim"
</div>

<div class="input-group col-sm-9">
<div class="input-group-prepend">
<span class="input-group-text" id="basic-addon-isim"
<i class="fa fa-user"></i
</span>
</div>
<input
id="isim"
type="text"
class="form-control"
placeholder="Adınız, Soyadınız"
name="isim"
required
/>
</div>
</div>

<div class="form-group row">
<div class="col-sm-3">
<label id="email-label" class="control-label" for="email"
</div>

<div class="input-group col-sm-9">
<div class="input-group-prepend">
<span class="input-group-text" id="basic-addon-email"
<i class="fa fa-envelope"></i
</span>
</div>
<input
type="email"
class="form-control"
id="email"
placeholder="email Adresiniz"
name="email"
pattern="^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$"
required
/>
</div>
</div>
<div class="form-group row">
<div class="col-sm-3">
<label id="number-label" class="control-label" for="telefon"
Telefon Numarası:</label
</div>
<div class="input-group col-sm-9">
<div class="input-group-prepend">
<span class="input-group-text" id="basic-addon-telefon"
<i class="fa fa-phone"></i
</span>
</div>
<input
type="text"
class="form-control"
id="telefon"
placeholder="Telefon Numaranızı Girin"
name="telefon"
required
/>
</div>
</div>

<div class="form-group row">
<div class="col-sm-3">
<label class="control-label" for="stajKonusu"
Staj Konusu:</label
</div>
<div class="input-group col-sm-9">
<div class="input-group-prepend">
<span class="input-group-text" id="basic-addon-stajKonusu"
<i class="fa fa-briefcase"></i
</span>
</div>
<input
type="text"
class="form-control"
id="stajKonusu"
placeholder="Staj Konusunu Girin"
name="stajKonusu"
required
/>
</div>
</div>

<div class="form-group row">
<div class="col-sm-3">
<label class="control-label" for="stajSuresi"
Staj Süresi:</label
</div>
<div class="input-group col-sm-9">
<div class="input-group-prepend">
<span class="input-group-text" id="basic-addon-stajSuresi"
<i class="fa fa-clock"></i
</span>
</div>
<input
type="text"
class="form-control"
id="stajSuresi"
placeholder="Staj Süresini Girin"
name="stajSuresi"
required
/>
</div>
</div>
<div class="form-group row">
<div class="col-sm-3">
<label class="control-label" for="stajDonemi"
Staj Dönemi:</label
</div>
<div class="input-group col-sm-9">
<div class="input-group-prepend">
<span class="input-group-text" id="basic-addon-stajDonemi"
<i class="fa fa-calendar"></i
</span>
</div>
<input
type="text"
class="form-control"
id="stajDonemi"
placeholder="Staj Dönemini Girin"
name="stajDonemi"
required
/>
</div>
</div>

<hr />

<div class="form-group row">
<div class="col-sm-3">
<label class="control-label" for="cvDosyasi"
CV Dosyanız:</label
</div>
<div class="col-sm-9">
<input
type="file"
class="form-control"
id="cvDosyasi"
name="cvDosyasi"
accept=".pdf"
required
/>
<small class="form-text text-muted">Sadece PDF formatı</small>
</div>
</div>

<div class="form-group row">
<div class="col-sm-3">
<label class="control-label" for="comment"
Staj Dönemi ile ilgili Görüş/Mesaj:</label
</div>

<div class="input-group col-sm-9">
<div class="input-group-prepend">
<span class="input-group-text" id="basic-addon-email"
<i class="fa fa-comment"></i
</span>
</div>
<textarea class="form-control" rows="5" id="comment"></textarea>
</div>
</div>

<div class="form-group row">
<div class="col-sm-12 submit-button">
<button
type="submit"
id="submit"
class="btn btn-default"
aria-pressed="true"
Başvuruyu Gönder
</button>
</div>
</div>
</form>
</div>
</div>[/CODE]

Kod:
 <script>
 const contactform = document.querySelector(".contact-form");
 let isim = document.getElementById("isim");
 let email = document.getElementById("email");
 let telefon = document.getElementById("telefon");
 let stajKonusu = document.getElementById("stajKonusu");
 let stajSuresi = document.getElementById("stajSuresi");
 let stajDonemi = document.getElementById("stajDonemi");
 let cvDosyasi = document.getElementById("cvDosyasi");
 let comment = document.getElementById("comment");

 contactform.addEventListener("submit", (e) => {
 e.preventDefault();

 let formData = {
 isim: isim.value,
 email: email.value,
 telefon: telefon.value,
 stajKonusu: stajKonusu.value,
 stajSuresi: stajSuresi.value,
 stajDonemi: stajDonemi.value,
 cvDosyasi: cvDosyasi.value,
 comment: comment.value,
 };

 let xhr = new XMLHttpRequest();
 xhr.open("POST", "/");
 xhr.setRequestHeader("content-type", "application/json");
 xhr.onload = function () {
 console.log(xhr.responseText);
 if (xhr.responseText == "success") {
 alert("email Gitti");
 isim.value = "";
 email.value = "";
 telefon.value = "";
 stajKonusu.value = "";
 stajSuresi.value = "";
 stajDonemi.value = "";
 cvDosyasi.value = "";
 comment.value = "";
 } else {
 alert("wrong");
 }
 };
 xhr.send(JSON.stringify(formData));
 });
 </script>

const express = require("express");
const app = express();
const nodemailer = require("nodemailer");

const PORT = process.env.PORT || 5000;

// Middleware
app.use(express.static("public"));
app.use(express.json());

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

app.post("/", (req, res) => {
 console.log(req.body);
 const transporter = nodemailer.createTransport({
 service: "gmail",
 auth: {
 user: "..",
 pass: "..",
 },
 });

 const mailOptions = {
 from: req.body.email,
 to: "...@gmail.com",
 subject: `Staj Başvuru Formu`,
 text: `
 İ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.stajDönemi}
 CV Dosyası: ${req.body.cvDosyasi}
 Staj Dönemi ile ilgili Görüş/Mesaj: ${req.body.comment}
 `,
 };

 transporter.sendMail(mailOptions, (error, info) => {
 if (error) {
 console.log(error);
 res.send("error");
 } else {
 console.log("Email sent: " + info.response);
 res.send("success");
 }
 });
});

app.listen(PORT, () => {
 console.log(`server running on port ${PORT}`);
});
 
Ah, bir detayı gözden kaçırmışım: Gmail SMTP'sini kullanırken gönderenin adresi, sizin adresiniz yani şu createTransport'taki olmak zorunda. Siz farklı bir adres yazmaya çalışsanız bile nafile.

Şurada dendiğine göre Google, gönderen adresinin üzerine yazıyormuş sizin adresinizi:



Tabii ki bu durum düşününce çok normal çünkü gönderen adresin bilgilerine sahip olmanız gerekirdi. Bir şekilde SMTP hesabı üzerinden farklı bir adres tanımlamak mümkün gibi gözüküyor, biraz araştırdım da. Yine de bu konuya hakim olmadığım için pek bir yönlendirme yapamayacağım.




Burada galiba diğer yerlerin hepsini boş bırakıp sadece gönderen adresini değiştirmeyi denemişsiniz. Diğer bilgilerin undefined olarak görünmesi için bir neden göremedim.
 

Orada hiçbir şey yapmamama rağmen kendi kendine 2 3 tane mail geldi arka arkaya undefined olarak onu bende anlamadım

Şirket için yaptığım bir form olduğu için sorun olur mu orda benim adresim gözükmesi ondan emin olamadım. SMTP'de değişmiyor ise kurumsal firmalara iş yapanlar ne kullanıyor SMTP yerine?
 
SMTP'de değişmiyor ise kurumsal firmalara iş yapanlar ne kullanıyor SMTP yerine?

Terimi pek doğru kullanmayıp kafanızı karıştırmış olabilirim. SMTP, e-posta transfer protokolünün isminin kısaltması. E-posta gönderilirken SMTP kullanılıyor yani her türlü (?).

Alternatif yöntemler hakkında yeterince bilgi sahibi değilim maalesef. :/ Umarım başkaları yardımcı olabilir.

@mertjr, tabii şunu yapabilirsiniz: Uygulamanıza has bir Gmail hesabı açarsınız ve SMTP hesabı olarak onu kullanırsınız. Ne kadar profesyonel olacağı konusunda yorumum yok.
 

Uzun uğraşlar sonucu bir yol buldum.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…