Email

PHPMailer से ईमेल भेजना

PHPMailer, PHP से ईमेल भेजने के लिए सबसे व्यापक रूप से उपयोग की जाने वाली लाइब्रेरी है।

PHPMailer, PHP से ईमेल भेजने के लिए सबसे व्यापक रूप से उपयोग की जाने वाली लाइब्रेरी है। यह SMTP को wrap करती है, जिससे आप host, port और credentials एक बार कॉन्फ़िगर करते हैं, फिर एक स्पष्ट object API से मैसेज बनाते और भेजते हैं। PHP का बिल्ट-इन mail() फ़ंक्शन बहुत कम करता है (कोई authentication नहीं, कमज़ोर error reporting), इसीलिए अधिकतर प्रोजेक्ट PHPMailer का उपयोग करते हैं। यहाँ एक पूर्ण, काम करने वाला send दिया गया है।

PHPMailer कैसे इंस्टॉल करें?

Composer का उपयोग करें:

composer require phpmailer/phpmailer

फिर autoloader लोड करें और ज़रूरी classes import करें:

<?php
require "vendor/autoload.php";

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

SMTP कैसे कॉन्फ़िगर करें और मैसेज कैसे भेजें?

एक PHPMailer instance बनाएँ, isSMTP() से इसे SMTP मोड में स्विच करें, फिर connection और message फ़ील्ड सेट करें। कॉल को try/catch में wrap करें ताकि असफल send चुपचाप निगली न जाए बल्कि रिपोर्ट हो:

<?php
$mail = new PHPMailer(true); // true enables exceptions

try {
    // Server settings
    $mail->isSMTP();
    $mail->Host       = "smtp.example.com";
    $mail->SMTPAuth   = true;
    $mail->Username   = getenv("SMTP_USER");
    $mail->Password   = getenv("SMTP_PASS");
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port       = 587;

    // Recipients
    $mail->setFrom("you@yourdomain.com", "Your App");
    $mail->addAddress("recipient@example.org", "Recipient Name");

    // Content
    $mail->isHTML(true);
    $mail->Subject = "Your receipt";
    $mail->Body    = "<p>Thanks for your order.</p>";
    $mail->AltBody = "Thanks for your order. This is the plain-text version.";

    $mail->send();
    echo "Message sent.";
} catch (Exception $e) {
    echo "Send failed: {$mail->ErrorInfo}";
}

कुछ बातें जो लोगों को उलझाती हैं। SMTPSecure और Port साथ चलते हैं: 587 के साथ ENCRYPTION_STARTTLS या 465 के साथ ENCRYPTION_SMTPS उपयोग करें। isHTML(true) PHPMailer को बताता है कि Body HTML है और AltBody को plain-text विकल्प के रूप में भेजना है। Constructor में true पास करें ताकि विफलता पर चुपचाप false लौटाने की बजाय Exception throw हो।

Attachment कैसे जोड़ें?

send() से पहले एक file path के साथ addAttachment कॉल करें:

<?php
$mail->addAttachment("./invoices/invoice-1042.pdf", "invoice.pdf");

दूसरा argument फ़ाइल का नाम बदलता है जैसा प्राप्तकर्ता देखता है। कई attachments के लिए इसे एक से अधिक बार कॉल कर सकते हैं।

Bird से भेजें

PHPMailer SMTP से बात करता है, जिसका मतलब है कि प्रोडक्शन में एक साफ़ reputation वाला mail server, सही authentication records और भेजने के बाद क्या हुआ यह देखने की जगह चाहिए। एक HTTP API सर्वर की ज़रूरत हटा देता है। आप HTTPS पर JSON भेजते हैं और एक structured response पाते हैं। Bird email API से वही मैसेज एक कॉल में भेजा जा सकता है:

use Bird\Bird;

$bird = new Bird(getenv("BIRD_API_KEY"));

$bird->emails->send([
  "from"    => "you@yourdomain.com",
  "to"      => "delivered@bird.dev",
  "subject" => "Hello from PHP",
  "html"    => "<p>It works.</p>",
]);

delivered@bird.dev sandbox address हमेशा mail स्वीकार करता है, इसलिए असली inboxes पर भेजने से पहले आप integration सत्यापित कर सकते हैं। कोई SMTP socket नहीं, कोई port चुनाव नहीं, कोई reputation खुद warm करने की ज़रूरत नहीं।

FAQ

PHP का mail() फ़ंक्शन ही क्यों नहीं?

mail() मैसेज को बिना SMTP authentication और लगभग बिना error reporting के लोकल sendmail binary को सौंप देता है। PHPMailer एक remote server से authenticate करता है, TLS सपोर्ट करता है, multipart मैसेज बनाता है, और बताता है कि send क्यों विफल हुआ।

Body और AltBody में क्या अंतर है?

Body HTML वर्शन है और AltBody plain-text fallback है। isHTML(true) सेट होने पर, जो clients HTML render नहीं कर सकते वे AltBody दिखाते हैं, जो deliverability में भी मदद करता है।

STARTTLS या SMTPS?

Port 587 पर ENCRYPTION_STARTTLS एक plain connection को TLS में upgrade करता है, जबकि port 465 पर ENCRYPTION_SMTPS शुरू से encrypted होता है। सेटिंग को उस port से मैच करें जो आपका mail server अपेक्षा करता है।

PHPMailer सही टूल है जब आप PHP से SMTP पर ईमेल भेजना चाहते हैं। जब आप सर्वर ऑपरेट करने से बचना चाहें, तो sending email guide पूरा API पथ दिखाता है।

व्यवहार में लाएँ।

इस विषय के लिए डॉक्यूमेंटेशन, गाइड और उदाहरणों के साथ आगे बढ़ें। संसाधन अंग्रेज़ी में हैं।

अभ्यास करें और इम्प्लीमेंटेशन ब्रीफ़ पाएँ

उसी नेटवर्क पर बनाएँ।

एक टेस्ट API key आपको तुरंत मिल जाती है। भुगतान विधि जोड़ने और सेंडर सत्यापित करने पर प्रोडक्शन अनलॉक होता है।

आपका अगला आइडिया।
जुड़ने के लिए तैयार।