Contact Form with Email
हम क्या बना रहे हैं
Contact form visitors को आपकी website से message भेजने देता है। इसके दो हिस्से हैं: एक HTML form जो user भरता है, और एक PHP file जो input validate करके उसे आपके email को भेजती है। इसे सुरक्षित और भरोसेमंद तरीके से संभालना बहुत आम काम है।
mail() demos के लिए चलता है, पर असली sites के लिए SMTP के साथ PHPMailer इस्तेमाल कीजिए ताकि messages सच में पहुँचें।Contact form
<form method="post" action="contact.php">
<input type="text" name="name" placeholder="Your name">
<input type="email" name="email" placeholder="Your email">
<textarea name="message" placeholder="Message"></textarea>
<button type="submit">Send</button>
</form>
Form contact.php को post करता है। हर field का name वो key है जो PHP पढ़ता है। fields सरल और साफ़ labelled रखिए।
Input validate करना
Raw input कभी email न कीजिए। पहले जाँचिए।
<?php
$name = trim($_POST["name"] ?? "");
$email = trim($_POST["email"] ?? "");
$message = trim($_POST["message"] ?? "");
$errors = [];
if ($name === "") $errors[] = "Name required";
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) $errors[] = "Valid email required";
if ($message === "") $errors[] = "Message required";
?>
हम हर field trim करते हैं, name और message ज़रूरी करते हैं, और email को filter_var से validate करते हैं। mail सिर्फ़ तब भेजिए जब $errors खाली हो।
Email भेजना
<?php
if (empty($errors)) {
$to = "you@yoursite.com";
$subject = "New contact from $name";
$body = "From: $name ($email)\n\n$message";
$headers = "From: no-reply@yoursite.com\r\n";
$headers .= "Reply-To: $email\r\n";
if (mail($to, $subject, $body, $headers)) {
echo "Message sent";
}
}
?>
ध्यान दीजिए From आपका अपना address है और visitor का email Reply-To में जाता है — ताकि आप reply कर सकें, बिना spoofing filters trigger किए।
PHPMailer क्यों
Plain mail() function अक्सर spam में जाता है या चुपचाप fail होता है। असली sites के लिए PHPMailer इस्तेमाल कीजिए, जो आपके email account के login के साथ SMTP से भेजता है, ताकि messages सही authenticated हों और inbox तक पहुँचें।
<?php
// सरल PHPMailer विचार:
$mail->isSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->Username = "you@gmail.com";
$mail->Password = "app-password";
$mail->send();
?>
PHPMailer authentication, encoding और attachments सही संभालता है — production के लिए भरोसेमंद विकल्प।
आम गलतियाँ
- Raw input email करना। हमेशा validate कीजिए; email को
filter_varसे जाँचिए। - Visitor email को From में डालना। From में अपना address, Reply-To में visitor का।
- Production में
mail()पर भरोसा। भरोसेमंद delivery को PHPMailer + SMTP इस्तेमाल कीजिए। - कोई spam protection नहीं। bots रोकने को honeypot या CAPTCHA जोड़िए।
सारांश
- Contact form = एक HTML form और PHP handler जो आपको email करता है।
- हर field validate कीजिए और email को
filter_varसे जाँचिए। - अपना address
Fromमें, visitor काReply-Toमें डालिए। - भरोसेमंद delivery को plain
mail()नहीं, PHPMailer + SMTP इस्तेमाल कीजिए। - honeypot या CAPTCHA जैसी spam protection जोड़िए।
आगे, input अच्छे से validate कीजिए form validation से, या जाँच जोड़िए PHP CAPTCHA से।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
PHP contact form email कैसे भेजता है?
mail() function से या, ज़्यादा भरोसेमंद, PHPMailer जैसी library से SMTP इस्तेमाल करके।PHP mail() अक्सर deliver क्यों नहीं होता?
mail() function server के mail भेजने को configured होने पर निर्भर है, और इसके messages अक्सर spam में जाते हैं या block होते हैं। असली sites के लिए सही SMTP settings के साथ PHPMailer कहीं ज़्यादा भरोसेमंद है।Contact form में spam कैसे रोकूँ?
filter_var से जाँचिए, और honeypot field या CAPTCHA जैसी सरल जाँच जोड़िए। Raw, बिना जाँचे input कभी email न कीजिए, और जो वापस दिखाएँ उसे escape कीजिए।क्या visitor का email From header में डालूँ?
From में अपना verified address इस्तेमाल कीजिए और visitor का email Reply-To में डालिए। Visitor के address से भेजना अक्सर spoofing के रूप में block होता है।PHPMailer क्या है?
mail() से बहुत बेहतर।