یکی از مشکلات رایج هاستهای اشتراکی ارسال نشدن ایمیلهای وردپرس است. در این هاستها برای جلوگیری از مصرف منابع و سوءاستفاده احتمالی، تابع 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 خود انتخاب کنید و روی دکمه Create کلیک کنید تا پسورد شما ساخته شود.

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

کد سفارشی SMTP برای وردپرس
کد سفارشی زیر را در وبسایت خود قرار دهید.
برای قرار دادن کد سفارشی در سایتهای وردپرسی از سه روش زیر میتوانید استفاده کنید:
- قرار دادن کد در فایل functions.php تم فرزند
- استفاده از پلاگینهای کمکی مانند code snippets
- ساخت پلاگین اختصاصی خود
بیشتر بخوانید: آموزش نحوه اضافه کردن کد سفارشی در وردپرس
/*
* 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 را جستجو، نصب و فعال کنید.

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

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

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