آموزش رایگان PHP

آموزش کامل ارسال ایمیل با PHP بر اساس استانداردهای جدید گوگل (2024)

1405/08/02 15:38 محراب حسن زاده
آموزش کامل ارسال ایمیل با PHP بر اساس استانداردهای جدید گوگل (2024)

مقدمه: چرا ایمیل‌های PHP ما اسپم می‌شوند؟

بسیاری از توسعه‌دهندگان وب پس از استفاده از تابع پیش‌فرض mail() در PHP متوجه می‌شوند که ایمیل‌های ارسالی آن‌ها مستقیماً به پوشه اسپم (Spam) منتقل شده یا اصلاً تحویل داده نمی‌شوند. علت اصلی این موضوع، عدم تایید هویت فرستنده ایمیل و رعایت نکردن پروتکل‌های امنیتی است. گوگل و یاهو از سال ۲۰۲۴ قوانین بسیار سخت‌گیرانه‌ای را برای فرستندگان ایمیل اعمال کرده‌اند. در این مقاله یاد می‌گیریم که چطور با استفاده از PHP ایمیلی ارسال کنیم که ۱۰۰٪ تایید شده و به صندوق ورودی (Inbox) کاربران هدایت شود.

استانداردهای سه‌گانه گوگل برای ارسال ایمیل امن

گوگل برای تایید هویت دامنه شما و تفکیک آن از ارسال‌کنندگان هرزنامه، سه رکورد DNS حیاتی را الزامی کرده است:

  • SPF (Sender Policy Framework): مشخص می‌کند کدام سرورها اجازه دارند از طرف دامنه شما ایمیل ارسال کنند.
  • DKIM (DomainKeys Identified Mail): یک امضای دیجیتال رمزنگاری‌شده به هدر ایمیل اضافه می‌کند تا اصالت پیام حفظ شود.
  • DMARC (Domain-based Message Authentication): مشخص می‌کند در صورت رد شدن بررسی‌های SPF یا DKIM، گیرنده با ایمیل ارسالی چه رفتاری داشته باشد (مثلاً رد کردن یا پوشه اسپم).

چرا نباید از تابع mail() در PHP استفاده کنیم؟

تابع mail() در PHP اطلاعات هدر کافی را به طور استاندارد ارسال نمی‌کند و فاقد احراز هویت SMTP است. بهترین جایگزین برای آن، استفاده از کتابخانه محبوب و استاندارد PHPMailer است. این کتابخانه به شما اجازه می‌دهد تا به سرورهای امن SMTP متصل شده و ایمیل‌های خود را منطبق بر آخرین استانداردهای امنیتی ارسال کنید.

گام اول: نصب PHPMailer

بهترین و ساده‌ترین راه برای نصب کتابخانه PHPMailer استفاده از مدیریت پکیج Composer است. ترمینال خود را در مسیر پروژه باز کرده و دستور زیر را اجرا کنید:

composer require phpmailer/phpmailer

گام دوم: پیاده‌سازی کد ارسال ایمیل با PHP و PHPMailer

در این بخش، یک اسکریپت کامل برای ارسال ایمیل با اتصال به یک SMTP معتبر (مانند جیمیل یا سرور هاست خودتان) ایجاد می‌کنیم. این ساختار تمام هدرهای استاندارد مورد نیاز گوگل را رعایت می‌کند:


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

// لود کردن اتولودر کامپوزر
require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    // تنظیمات سرور SMTP
    $mail->isSMTP();                                            // ارسال از طریق SMTP
    $mail->Host       = 'mail.yourdomain.com';                    // آدرس سرور SMTP شما
    $mail->SMTPAuth   = true;                                   // فعال‌سازی تایید هویت SMTP
    $mail->Username   = 'info@yourdomain.com';                   // نام کاربری ایمیل
    $mail->Password   = 'your_strong_password';                  // رمز عبور ایمیل
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;         // رمزنگاری امن TLS
    $mail->Port       = 587;                                    // پورت استاندارد TLS

    // تنظیم کاراکترست برای پشتیبانی کامل از زبان فارسی
    $mail->CharSet = 'UTF-8';

    // اطلاعات فرستنده و گیرنده
    $mail->setFrom('info@yourdomain.com', 'وب‌سایت ما');
    $mail->addAddress('recipient@gmail.com', 'کاربر گرامی');     // افزودن گیرنده
    $mail->addReplyTo('support@yourdomain.com', 'پشتیبانی');

    // محتوای ایمیل
    $mail->isHTML(true);                                        // فرمت ایمیل به صورت HTML
    $mail->Subject = 'تایید حساب کاربری - استانداردهای جدید گوگل';
    
    // طراحی بدنه ایمیل به صورت HTML
    $mail->Body    = '
< div style = " direction: rtl; font-family: Tahoma; padding: 20px; line-height: 1.8; " > 
< h2 style = " color: #2c3e50; " > سلام کاربر عزیز < / h2 >

< p > ثبت‌نام شما با موفقیت انجام شد. این ایمیل با رعایت استانداردهای جدید امنیتی ارسال شده است. < / p >
< / div > ';

 $mail->AltBody = 'سلام کاربر عزیز، ثبت‌نام شما با موفقیت انجام شد.'; // نسخه متنی ساده برای کلاینت‌های قدیمی 
$mail->send();
 echo 'ایمیل با موفقیت ارسال شد و در اینباکس قرار خواهد گرفت!'; 
} catch (Exception $e) {
 echo "خطا در ارسال ایمیل. جزئیات خطا: {$mail->ErrorInfo}"; 
}

گام سوم: چیدمان رکوردهای DNS در هاست

برای نهایی کردن استانداردسازی، وارد کنترل پنل هاست خود (سی‌پنل یا دایرکت‌ادمین) شده و در بخش Zone Editor رکوردهای زیر را تنظیم کنید:

۱. رکورد SPF:

یک رکورد از نوع TXT بسازید که مقدار آن به صورت زیر باشد (این مقدار نشان می‌دهد سرور هاست شما مجاز به ارسال است):

v=spf1 mx include:secureserver.net ~all

۲. رکورد DKIM:

معمولاً کنترل پنل هاست شما گزینه‌ای به نام "Email Deliverability" دارد که کلید عمومی DKIM را به طور خودکار تولید کرده و به رکوردهای DNS شما اضافه می‌کند. اطمینان حاصل کنید که وضعیت آن Active باشد.

۳. رکورد DMARC:

یک رکورد TXT دیگر با نام _dmarc.yourdomain.com بسازید و مقدار زیر را در آن قرار دهید تا سیاست‌های سختگیرانه برای ایمیل‌های نامعتبر اعمال شود:

v=DMARC1; p=quarantine; pct=100; rua=mailto:dmarc-reports@yourdomain.com

نتیجه‌گیری

با مهاجرت از تابع قدیمی mail() به کتابخانه امن PHPMailer، پیکربندی صحیح پورت‌های TLS (پورت ۵۸۷) و تنظیم رکوردهای سه‌گانه SPF، DKIM و DMARC در مدیریت DNS دامنه خود، با خیال راحت می‌توانید مطمئن باشید که تمامی ایمیل‌های ارسالی سیستم PHP شما به سلامت به صندوق ورودی (Inbox) کاربران جیمیل و سایر سرویس‌دهندگان معتبر تحویل داده خواهند شد.


پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش کامل معماری MVC در PHP به زبان ساده و گام به گام
1405/07/28 22:57

آموزش کامل معماری MVC در PHP به زبان ساده و گام به گام

مطالعه بیشتر
عملگرها و عبارات محاسباتی در جاوا اسکریپت: نحوه استفاده و کاربردهای مختلف
1402/06/28 00:20

عملگرها و عبارات محاسباتی در جاوا اسکریپت: نحوه استفاده و کاربردهای مختلف

مطالعه بیشتر
آموزش کامل کار با آرایه‌ها و اشیاء در جاوا اسکریپت: ایجاد، دستکاری و پیمایش
1403/06/02 21:08

آموزش کامل کار با آرایه‌ها و اشیاء در جاوا اسکریپت: ایجاد، دستکاری و پیمایش

مطالعه بیشتر
آموزش تغییر نوع و اندازه فونت و رنگ متن با CSS: استایل‌دهی حرفه‌ای به متن‌ها
1402/06/05 00:13

آموزش تغییر نوع و اندازه فونت و رنگ متن با CSS: استایل‌دهی حرفه‌ای به متن‌ها

مطالعه بیشتر
توابع فلش (Arrow Functions) در جاوا اسکریپت: ساده‌سازی کد با استفاده از ES6
1403/06/02 20:36

توابع فلش (Arrow Functions) در جاوا اسکریپت: ساده‌سازی کد با استفاده از ES6

مطالعه بیشتر
واحدهای CSS مدرن: آموزش استفاده از vw، vh، vmin و vmax برای طراحی واکنش‌گرا
1403/08/11 20:43

واحدهای CSS مدرن: آموزش استفاده از vw، vh، vmin و vmax برای طراحی واکنش‌گرا

مطالعه بیشتر
معرفی Vue.js و ویژگی‌های کلیدی آن: فریمورک مدرن برای توسعه وب تعاملی
1402/06/28 00:33

معرفی Vue.js و ویژگی‌های کلیدی آن: فریمورک مدرن برای توسعه وب تعاملی

مطالعه بیشتر
آموزش کامل حلقه foreach در PHP برای پیمایش آرایه‌ها (به زبان ساده)
1405/04/04 00:22

آموزش کامل حلقه foreach در PHP برای پیمایش آرایه‌ها (به زبان ساده)

مطالعه بیشتر
نصب Node.js و Create React App: شروع پروژه‌های React.js به‌صورت آسان
1402/06/28 01:09

نصب Node.js و Create React App: شروع پروژه‌های React.js به‌صورت آسان

مطالعه بیشتر
مقدمه‌ای بر CSS و نحوه اضافه کردن آن به HTML: راهنمای ساده و کامل برای مبتدیان
1402/06/04 23:43

مقدمه‌ای بر CSS و نحوه اضافه کردن آن به HTML: راهنمای ساده و کامل برای مبتدیان

مطالعه بیشتر
آموزش طراحی و استایل‌دهی فرم‌ها با CSS: ایجاد فرم‌های کاربرپسند و واکنش‌گرا
1402/06/18 22:34

آموزش طراحی و استایل‌دهی فرم‌ها با CSS: ایجاد فرم‌های کاربرپسند و واکنش‌گرا

مطالعه بیشتر
آموزش اصولی Insert اطلاعات در دیتابیس طبق استانداردهای گوگل
1405/05/13 20:58

آموزش اصولی Insert اطلاعات در دیتابیس طبق استانداردهای گوگل

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد