Saytdagi qayta aloqa formasidan xat yuborishni sozlash
Amaliyot3 daqInnovialabs tahririyati
Qisqacha
Ishonchli forma avval arizani saqlaydi (bazaga, CRM ga yoki Telegramga), keyin SPF, DKIM va DMARC sozlangan domendan tranzaksion servis orqali xat yuboradi; spamni honeypot va so‘rovlar limiti to‘xtatadi.
Qisqa javob
Qayta aloqa formasi faqat pochtaga tayanmasligi kerak. Ishlaydigan sxema:
- Brauzer ma’lumotlarni server tomonidagi ishlovchingizga (API marshrut yoki serverless funksiya) yuboradi.
- Ishlovchi ma’lumotlarni tekshiradi va spamni ajratib tashlaydi.
- Ariza saqlanadi: ma’lumotlar bazasi, CRM, jadval yoki Telegramdagi xabar.
- Shundan keyingina SMTP yoki tranzaksion servis orqali xat yuboriladi.
- Ariza saqlangach, xat kechiksa ham, foydalanuvchi «Rahmat» ni ko‘radi.
Xostingdagi mail() funksiyasi va sozlamasiz Gmail «nomidan» yuborish — xatlar spamga tushishi yoki yo‘qolishining ko‘p uchraydigan sabablari.
Yuborish usullari
| Usul | Afzalliklari | Kamchiliklari |
|---|---|---|
| Pochtangiz SMTP si (Google Workspace, Microsoft 365 va boshqalar) | oddiy, quti allaqachon bor | yuborish limitlari, server sozlamalarida ilova paroli |
| Tranzaksion servis (SendGrid, Mailgun, Postmark, Amazon SES, Resend) | yaxshi yetkazib berish, loglar, yetkazilmaganlik haqida webhooklar | DNS sozlash kerak, hajm o‘sganda pullik tariflar |
| Serverless ishlovchi (Vercel, Netlify, Cloudflare) | o‘z serveringiz kerak emas | ichida baribir SMTP yoki pochta API si kerak |
| Tayyor forma servislari | kod umuman yo‘q | ma’lumotlar uchinchi tomonda, nazorat kamroq |
Ko‘pchilik saytlar uchun oqilona tanlov — server ishlovchisidan chaqiriladigan API orqali tranzaksion servis. API kalit server muhit o‘zgaruvchilarida saqlanadi va hech qachon brauzerga tushmaydi.
Ishlovchi namunasi
Nodemailer bilan Node.js marshruti. Mantiq istalgan freymvorkda bir xil.
import nodemailer from "nodemailer";
const transport = nodemailer.createTransport({
host: process.env.SMTP_HOST,
port: 587,
auth: { user: process.env.SMTP_USER, pass: process.env.SMTP_PASS }
});
export async function handleLead(body, ip) {
if (body.website) return { ok: true }; // honeypot: bot yashirin maydonni to‘ldirgan
if (!body.name || !body.contact) return { ok: false, error: "invalid" };
if (await tooManyRequests(ip)) return { ok: false, error: "rate_limit" };
const lead = await saveLead(body); // avval saqlaymiz
try {
await transport.sendMail({
from: "Sayt <no-reply@example.com>",
to: "sales@example.com",
replyTo: body.email,
subject: `Yangi ariza: ${body.name}`,
text: `${body.name}\n${body.contact}\n\n${body.message ?? ""}`
});
} catch (err) {
await markForRetry(lead.id, err); // xat ketmadi, ariza butun
}
return { ok: true };
}
E’tibor bering: From — domeningizdagi manzil, tashrif buyuruvchining emaili esa Reply-To ga qo‘yiladi. Agar From ga tashrif buyuruvchi manzilini qo‘ysangiz, pochta tizimlari xatni deyarli albatta soxta deb rad etadi.
Spamdan himoya
- Honeypot. Inson ko‘rmaydigan yashirin maydon (masalan,
website). Botlar uni to‘ldiradi — bunday so‘rovlarni jimgina e’tiborsiz qoldiring. - So‘rovlar limiti. Bitta IP dan ma’lum vaqt ichidagi yuborishlar sonini cheklang.
- Vaqtni tekshirish. Sahifa yuklanganidan bir soniya o‘tib yuborilgan forma katta ehtimol bilan botdan.
- Kapcha (Cloudflare Turnstile, reCAPTCHA) — honeypot va limitlar yetmay qolganda.
- Serverda validatsiya. Brauzerdagi tekshiruvlarni chetlab o‘tish oson, ularni serverda takrorlang.
Yetkazib berish asoslari
- O‘z domeningizdan yuboring, bepul qutidan emas.
- SPF (domendan kim yuborishi mumkin), DKIM (xat imzosi) va DMARC (tekshiruvdan o‘tmagan xatlar bilan nima qilish) ni sozlang. Tranzaksion servis tayyor DNS yozuvlarini beradi.
- Xatlarni sodda yozing: tushunarli mavzu, matnli versiya, qisqartirilgan havolalarsiz.
- Servis qo‘llab-quvvatlasa, yetkazilmaganlik webhooklarini kuzatib boring.
Arizalarni qanday yo‘qotmaslik kerak
- Arizani xat yuborishdan oldin saqlang. Pochta — bildirishnoma, ombor emas.
- Kanalni takrorlang: xat va qo‘shimcha ravishda Telegram chatga xabar yoki CRM ga yozuv.
- Qayta urinishlar: muvaffaqiyatsiz yuborishlarni navbatga qo‘ying va yana urinib ko‘ring.
- Monitoring: haftada bir test ariza yuboring yoki ishlovchi xatolariga alert sozlang.
- Foydalanuvchiga halol javob: saqlash muvaffaqiyatsiz bo‘lsa, «Rahmat» emas, xato va muqobil kontaktni ko‘rsating.