نویسنده: مستر نارگیل تاریخ انتشار: ۱۴۰۵/۰۵/۲۸

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

رفع مشکل ارسال نشدن ایمیل در وردپرس با کد سفارشی

استفاده از Gmail برای ارسال ایمیل وردپرس

برای استفاده از SMTP می‌توانید از یک سرویس ایمیل مانند Gmail ، SendGrid یا brevo استفاده کنید و تنظیمات وردپرس را برای استفاده از این سرویس پیکربندی کنید.
ما از سرویس smtp جیمیل استفاده میکنیم، با این سرویس روزانه می‌توانید تا 100 ایمیل ارسال کنید.

دریافت App Password گوگل

اپ پسورد یک کد شانزده رقمی است که به دستگاه‌ها و حساب‌های کاربری غیر از گوگل (مثل وردپرس) اجازه میدهد تا به حساب کاربری گوگل شما دسترسی پیدا کنند.

به حساب گوگل خود بروید. myaccount.google.com
در پنل دسترسی سمت چپ گزینه security را انتخاب کنید.
مطمئن شوید که ورود دو مرحله‌ای یا 2-Step Verification در حساب شما فعال است، اگر فعال نیست آن را فعال کنید.

فعال‌سازی ورود دو مرحله‌ای در گوگل

پس از فعال‌سازی ورود دو مرحله‌ای باید قسمت App Password را در پایین صفحه ببینید، اگر آن را پیدا نکردید از قسمت سرچ بالای صفحه آن را جستجو کنید و روی آن کلیک کنید.

ساخت App Password جیمیل برای استفاده در وردپرس

در مرحله بعد پسورد خود را وارد و به قسمت App Password بروید.
در پنجره جدید یک اسم برای App خود انتخاب کنید و روی دکمه Create کلیک کنید تا پسورد شما ساخته شود.

انتخاب اسم برای App گوگل

خب کار تمام است، اکنون پسورد ساخته شده رو کپی کنید تا بعدا از آن استفاده کنیم.

generate app password برای جیمیل

کد سفارشی SMTP برای وردپرس

کد سفارشی زیر را در وب‌سایت خود قرار دهید.

/*
* gmail smtp for wordpress
* https://mrnargil.ir/smtp-email-wordpress/
*/
add_action('phpmailer_init', 'send_smtp_email');
function send_smtp_email($phpmailer) {
    $phpmailer->Username   = 'YOUR GMAIL';
    $phpmailer->Password   = 'APP PASSWORD';
    $phpmailer->From       = 'ADMIN EMAIL';
    $phpmailer->FromName   = 'مستر نارگیل';
    $phpmailer->isSMTP();
    $phpmailer->Host       = 'smtp.gmail.com';
    $phpmailer->SMTPAuth   = true;
    $phpmailer->Port       = 587;
    $phpmailer->SMTPSecure = 'tls';
}

مشخصات سرویس جیمیل را در کد وارد کنید

اکنون باید مشخصات gmail خود را در کد بالا وارد کنید.
قسمت‌هایی که باید اصلاح کنید این‌ها هستند:

    $phpmailer->Username   = 'YOUR GMAIL';
    $phpmailer->Password   = 'APP PASSWORD';
    $phpmailer->From       = 'ADMIN EMAIL';
    $phpmailer->FromName   = 'مستر نارگیل';

اگر کلیه مراحل بالا را درست انجام داده باشید از این به بعد ایمیل‌های سایت شما باید به درستی ارسال شوند.

رفع مشکل ارسال نشدن ایمیل در وردپرس با افزونه WP Mail SMTP

اگر مشکلی با نصب افزونه‌های اضافی در وردپرس را ندارید من این روش را به شما پیشنهاد میکنم.

از پیشخوان وردپرس و قسمت افزونه‌ها WP Mail SMTP را جستجو، نصب و فعال کنید.

نصب افزونه WP Mail SMTP

پس از فعال‌سازی این افزونه یک بار پیشخوان را رفرش کنید.
از قسمت ایمیل روی تنظیمات کلیک کنید و به بخش ارسال کننده ایمیل بروید.

آموزش افزونه WP Mail SMTP

در این قسمت می‌توانید هر یک از سرویس دهنده‌های SMTP را انتخاب کنید. اگر میخواهید از جیمیل خود استفاده کنید روی گزینه آخر یعنی SMTPهای دیگر کلیک کنید و در فرم زیر مشخصات SMTP جیمیل را مطابق زیر وارد کنید.
توجه: گزینه گوگل را انتخاب نکنید چون نیاز به Client ID و Client Secret دارد که در ایران در دسترس نمی‌باشد.

تنظیمات پلاگین WP Mail SMTP برای ارسال با جیمیل

پس از تکمیل این فرم روی ذخیره تنظیمات کلیک کنید و تنظیمات را ذخیره کنید.

خب کار تمام است اکنون سایت شما به جای PHP از سرویس ایمیل SMTP استفاده خواهد کرد.