Home / คำแนะนำ / วิธีสร้างแบบฟอร์มการติดต่อที่ทันสมัยโดยไม่ต้องตั้งค่า SMTP หรือเซิร์ฟเวอร์อีเมล
คู่มือวิศวกรรม · สถาปัตยกรรมและความปลอดภัย

วิธีสร้างแบบฟอร์มการติดต่อที่ทันสมัยโดยไม่ต้องตั้งค่า SMTP หรือเซิร์ฟเวอร์อีเมล

คู่มือทางวิศวกรรมที่ครอบคลุมเกี่ยวกับการแยกแบบฟอร์มเว็บออกจากเซิร์ฟเวอร์ SMTP ที่เปราะบาง ปรับปรุงความสามารถในการส่งเป็น 99.8% และกำจัดข้อมูลรับรองอีเมลแบบเคลียร์เท็กซ์จากโครงสร้างพื้นฐานของเว็บ

1. เหตุใด SMTP แบบดั้งเดิมจึงล้มเหลวบนเว็บไซต์สมัยใหม่

เป็นเวลาหลายทศวรรษแล้วที่นักพัฒนากำหนดค่าข้อมูลรับรอง PHPMailer หรือ SMTP โดยตรงในโค้ดเว็บไซต์หรือฐานข้อมูล CMS ในสภาพแวดล้อมการประมวลผลแบบไร้เซิร์ฟเวอร์ คงที่ (Jamstack) และ Edge สิ่งนี้จะสร้างข้อบกพร่องทางสถาปัตยกรรมที่รุนแรง: ข้อมูลรับรองที่ถูกเปิดเผยในชุดไคลเอนต์ การหมดเวลาการเชื่อมต่อ และความล้มเหลวในการส่งมอบ SPF/DKIM/DMARC

warning

ห้ามฝังรหัสผ่าน SMTP หรือคีย์ลับในชุด HTML ฝั่งไคลเอ็นต์หรือ JavaScript ส่วนหน้า ใช้ปลายทางการนำเข้า HTTP เฉพาะ

2. สถาปัตยกรรมการนำเข้าแบบฟอร์มแบบแยกส่วน

แทนที่จะให้เว็บเซิร์ฟเวอร์เชื่อมต่อกับพอร์ต SMTP แบบซิงโครนัสในระหว่างการร้องขอ HTTP สถาปัตยกรรมสมัยใหม่ใช้โฟลว์ธุรกรรมแบบแยกส่วน ไคลเอนต์ส่งเพย์โหลด HTTPS POST มาตรฐานไปยังตำแหน่งข้อมูล API แบ็กเอนด์ตรวจสอบและคงการสอบถามใน PostgreSQL ก่อนที่ผู้ปฏิบัติงานแบบอะซิงโครนัสจะส่งการแจ้งเตือน

contact-form.html html
<!-- Vanilla HTML Form with Lugatu Form Endpoint -->
<form id="inquiry-form">
  <label for="name">Your Name</label>
  <input type="text" id="name" name="name" required />

  <label for="email">Work Email</label>
  <input type="email" id="email" name="email" required />

  <label for="message">Project Details</label>
  <textarea id="message" name="message" rows="4" required></textarea>

  <!-- Built-in Honeypot Bot Trap -->
  <input type="text" name="_gotcha" style="display:none !important" tabindex="-1" autocomplete="off" />

  <button type="submit">Send Inquiry</button>
</form>

<script>
document.getElementById('inquiry-form').addEventListener('submit', async (e) => {
  e.preventDefault();
  const form = e.target;
  const data = new FormData(form);

  const payload = {
    fields: {
      name: data.get('name'),
      email: data.get('email'),
      message: data.get('message')
    },
    honeypot: data.get('_gotcha') || ''
  };

  const res = await fetch('https://www.lugatu.com/api/v1/public/forms/YOUR_PUBLIC_FORM_ID/submissions', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
    body: JSON.stringify(payload)
  });

  if (res.ok) {
    alert('Inquiry sent successfully!');
    form.reset();
  }
});
</script>

3. การป้องกันสแปมในตัวโดยไม่มี CAPTCHA ที่รบกวน

Lugatu ตรวจสอบการส่งบอทอัตโนมัติที่เข้ามาโดยใช้ฮันนี่พอตที่มองไม่เห็นและการจำกัดอัตรา ผู้เยี่ยมชมที่ถูกต้องตามกฎหมายส่งแบบฟอร์มได้อย่างราบรื่นโดยไม่ต้องไขปริศนาการจดจำภาพ

4. โหมดการแจ้งเตือนที่ยืดหยุ่นและการเก็บรักษาที่คงทน

แม้ว่าโควตาอีเมลขาออกจะถึงโควต้าแล้ว การส่งทั้งหมดจะยังคงอยู่ในกล่องจดหมายของพื้นที่ทำงานของคุณ คุณสามารถเลือกการแจ้งเตือนทันที สรุปรายวัน หรือสรุปผู้บริหารรายสัปดาห์ตามแบบฟอร์ม

ความปลอดภัยและการรับรองความถูกต้องไม่แปรผัน

คำแนะนำด้านความปลอดภัย: อย่าเก็บรหัสผ่านเซิร์ฟเวอร์ SMTP บุคคลที่สามไว้บนเว็บเซิร์ฟเวอร์ส่วนหน้า การกำหนดเส้นทางผ่าน HTTPS POST ไปยังจุดสิ้นสุดการนำเข้าที่ได้รับอนุญาตจะช่วยลดเวกเตอร์การขโมยข้อมูลรับรอง

การแก้ไขปัญหาและข้อผิดพลาดในการนำเข้าทั่วไป

อีเมลจะเข้าสู่โฟลเดอร์สแปมเมื่อส่งโดยตรงจากเซิร์ฟเวอร์

Lugatu ตรวจสอบสิทธิ์อีเมลธุรกรรมขาออกด้วยพูล Amazon SES IP ที่มีชื่อเสียงสูงซึ่งกำหนดค่าด้วยการจัดแนว SPF, DKIM และ DMARC ที่ถูกต้อง

คำถามที่พบบ่อย

Lugatu รองรับการอัพโหลดไฟล์ในแบบฟอร์มการติดต่อหรือไม่?

ใช่. Lugatu รองรับไฟล์แนบที่สแกนไวรัสอย่างปลอดภัยโดยใช้โทเค็นการอัปโหลดที่ลงนามล่วงหน้าและพื้นที่เก็บข้อมูลส่วนตัว

พร้อมที่จะสร้างจุดสิ้นสุดของแบบฟอร์มแล้วหรือยัง?

เริ่มต้นฟรีในไม่กี่วินาที ไม่ต้องใช้บัตรเครดิต

เริ่มฟรี →