Güvenlik kısıtlamaları nedeniyle istemci tarafı JavaScript kullanarak doğrudan web tarayıcısından e-posta göndermek mümkün değildir. Tarayıcılar, kullanıcı gizliliğini korumak için güvenilmeyen kodun e-posta sunucuları gibi hassas kaynaklara erişmesini engeller. E-posta göndermek için e-posta iletimi güvenli bir şekilde işleyen bir sunucu tarafı bileşene ihtiyacınız vardır.
İçerik Tablosu
Sunucu Tarafı Yaklaşımla E-posta Gönderme
Çözüm, sunucuya istek göndermek için istemci tarafında JavaScript kullanmaktır. Sunucu daha sonra uygun bir kütüphane kullanarak e-posta gönderimini işler. Bu, hassas bilgileri istemciden ayırır ve güvenliği artırır.
İşte fetch
API’sini kullanan istemci tarafı bir örnek:
async function sendEmail(alıcı, konu, gövde) {
const response = await fetch('/send', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ alıcı, konu, gövde }),
});
if (response.ok) {
console.log('E-posta başarıyla gönderildi!');
} else {
console.error('E-posta gönderimi başarısız oldu:', response.status);
}
}
sendEmail('alıcı@örnek.com', 'Test E-postası', 'Bu bir test e-postasıdır.');
Bu kod, bir sunucu uç noktasına (/send
) POST isteği gönderir. Sunucu tarafı kod (örneğin, Nodemailer ile Node.js kullanarak) bu isteği alır, e-posta ayrıntılarını işler ve bir SMTP sunucusu kullanarak e-postayı gönderir.
Sunucu Kimlik Bilgilerini Güvenliğe Alma
SMTP sunucu kimlik bilgilerinizi (sunucu, kullanıcı adı, parola) asla istemci tarafı JavaScript kodunuza doğrudan yerleştirmeyin. Bu önemli bir güvenlik riski oluşturur. Sunucu, bu kimlik bilgilerini genellikle halka erişilemeyen ortam değişkenleri veya yapılandırma dosyaları kullanarak güvenli bir şekilde yönetmelidir.
İşte sunucu tarafı kod örneği (Nodemailer ve dotenv ile Node.js):
require('dotenv').config();
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
service: process.env.EMAIL_SERVICE,
auth: {
user: process.env.EMAIL_USER,
pass: process.env.EMAIL_PASSWORD,
},
});
// ... (POST isteğini işleyin ve transporter.sendMail() kullanın) ...
Bu, kimlik bilgilerini kod tabanınızdan ve sürüm kontrolünden ayrı tutarak (.env
dosyasını .gitignore
dosyanıza ekleyin) bir .env
dosyasından yükler. E-posta sağlayıcınızı daha az güvenli uygulamalara izin verecek veya uygulama parolaları kullanacak şekilde yapılandırmayı unutmayın.
Sonuç
Web uygulamalarından e-posta göndermek, güvenli e-posta iletimi için bir sunucu tarafı bileşen gerektirir. İstemci tarafı JavaScript, kullanıcı etkileşimini ve sunucuyla iletişimi kolaylaştırırken, sunucu işlemin hassas kısımlarını ele alır. Kimlik bilgilerini istemci tarafı kodun dışında tutarak güvenliğe öncelik vermek, sağlam ve güvenli bir e-posta gönderme sistemi için çok önemlidir.