Node.js E-posta Gönderme
Yazıda Node.js ile e-posta gönderme veya daha bilinen adıyla mail gönderme ile ilgili bilgiler yer almaktadır.
Node.js ile e-posta gönderme işlemi nodemailer modülü ile yapılabilir.
Modül SMTP sunucusuna bağlanarak eposta gönderir.
Ayrıca modül içerisinde gmail, hotmail, outlook gibi hazır eposta sağlayıcı ayarları yer almaktadır.
Modülü indirmek için
npm install nodemailer
komutu veya
npm install nodemailer --save
komutu kullanılır.
Modül projeye aşağıdaki komutlarla dahil edilir.
const nodemailer = require('nodemailer');
Nodemailer dahil edildikten sonra eposta gönderme, eposta doğrulama gibi işlemleri yapmak için öncelikle SMTP bilgilerinin createTransport metoduna parametre olarak aktarılması gerekir.
let transporter = nodemailer.createTransport({
host: 'SMTP sunucu adresi',
port: 465,
secure: true,
auth: {
user: '[email protected]',
pass: 'eposta-şifresi'
}
});
Yazılan parametrelerden port ve secure değerlerinin eklenmesi zorunlu değildir.
Ancak SMTP sunucunun port adresi farklı ise yazılması gerekir.
Hazır eposta sağlayıcıları (gmail, hotmail, outlook vb.) için aşağıdaki gibi bir yapı kullanılır.
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: '[email protected]',
pass: 'eposta-şifresi'
}
});
Ayarlar createTransport metoduna aktarıldıktan sonra metot çeşitli işlemler için metot ve özelliklere sahip nesne döndürür.
Eposta bilgilerini doğrulamak
Bilgiler girildikten sonra girilen bilgilerin doğruluğunu test etmek için verify metodu kullanılır.
transporter.verify(function (error, success) {
if (error) throw error;
console.log('Bağlantı başarıyla sağlandı');
});
Bilgiler yanlışsa error parametresine hata nedeni ile ilgili bilgiler yazılacak, doğruysa success parametresi true değerini alacaktır.
Eposta göndermek
Eposta göndermek için sendMail metodu kullanılır.
Metodun ilk parametresi gönderilecek eposta içeriği ile ilgili bilgilerin bulunduğu bir nesne, ikincisi ise geri bildirim fonksiyon parametresidir.
Eposta göndermek için gerekli olan temel parametreler aşağıdaki gibidir.
let bilgiler = {
from: 'Gönderen Adı Soyadı <[email protected]>',
to: 'gö[email protected]',
subject: 'Eposta konu başlığı',
text: 'Eposta metin içeriği'
};
Gönderilecek eposta ile ilgili bilgiler girildikten sonra gönderilir.
transporter.sendMail(bilgiler, function (error, info) {
if (error) throw error;
console.log('Eposta gönderildi ' + info.response);
});
Geri bildirim fonksiyonu işlem sonucuna göre bir geri dönüş mesajı verecektir.
Çoklu eposta göndermek
Birden fazla eposta adresine gönderim yapmak için gönderilecek eposta ile ilgili bilgilerin bulunduğu bilgiler nesnesinin to özelliğine eposta adresi virgülle eklenmesi yeterli olacaktır.
let bilgiler = {
from: 'Gönderen Adı Soyadı <[email protected]>',
to: '[email protected], [email protected], [email protected]',
subject: 'Eposta konu başlığı',
text: 'Eposta metin içeriği'
};
HTML eposta göndermek
HTML kodlarının olduğu bir eposta göndermek için eposta bilgilerinin bulunduğu nesneye html özelliğini eklenmesi yeterli olacaktır.
let bilgiler = {
from: 'Gönderen Adı Soyadı <[email protected]>',
to: 'gö[email protected]',
subject: 'Eposta konu başlığı',
text: 'Eposta metin içeriği',
html: 'Eposta <b>HTML metin içeriği</b>'
};
Yazılan kodlar bir araya getirirsek;
'use strict';
const nodemailer = require('nodemailer');
let transporter = nodemailer.createTransport({
host: 'SMTP sunucu adresi',
port: 465,
secure: true,
auth: {
user: '[email protected]',
pass: 'eposta-şifresi'
}
});
transporter.verify(function (error, success) {
if (error) throw error;
console.log('Bağlantı başarıyla sağlandı');
});
let bilgiler = {
from: 'Gönderen Adı Soyadı <[email protected]>',
to: 'gö[email protected]',
subject: 'Eposta konu başlığı',
text: 'Eposta metin içeriği',
html: 'Eposta <b>HTML metin içeriği</b>'
};
transporter.sendMail(bilgiler, function (error, info) {
if (error) throw error;
console.log('Eposta gönderildi ' + info.response);
});
Dosya göndermek
Eposta eki olarak dosya göndermek için eposta bilgilerinin bulunduğu nesneye attachments özelliğinin eklenmesi yeterli olacaktır.
let bilgiler = {
from: 'Gönderen Adı Soyadı <[email protected]>',
to: 'gö[email protected]',
subject: 'Eposta konu başlığı',
text: 'Eposta metin içeriği',
html: 'Eposta <b>HTML metin içeriği</b>',
attachments: [{
filename: 'dosya.txt',
content: 'Dosya içeriği'
}]
};
Dosya içeriğini kendimiz yazabileceğimiz gibi fs modülü içerisinde yer alan createReadStream metodu ile harici bir dosyayı ekleyebiliriz.
let bilgiler = {
from: 'Gönderen Adı Soyadı <[email protected]>',
to: 'gö[email protected]',
subject: 'Eposta konu başlığı',
text: 'Eposta metin içeriği',
html: 'Eposta <b>HTML metin içeriği</b>',
attachments: [{
filename: 'dosya.pdf',
content: fs.createReadStream('ek-dosya-adi.pdf')
}]
};
Harici dosya göndermek için projeye fs modülünün eklenmesi gerekir.
Node.js Derslerine buradan ulaşabilirsiniz…
Hayırlı günler dilerim.