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

مشکل ارسال ایمیل در وردپرس یکی از رایج‌ترین چالش‌هایی است که بسیاری از مدیران سایت‌ها با آن روبه‌رو می‌شوند. این مشکل معمولاً به دو دلیل بروز می‌کند: یا ایمیل‌ها به‌طور کلی از طرف سایت ارسال نمی‌شوند، و یا اینکه ارسال می‌شوند اما هرگز به دست گیرنده نمی‌رسند. هر یک از این حالات می‌تواند باعث از دست رفتن اطلاعات مهم، نارضایتی کاربران، یا اختلال در فرایند سایت شما شود.

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

یک بررسی ساده

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

برای این منظور می‌توان از افزونه‌ای مانند Check Email استفاده کرد. این افزونه امکان ارسال یک ایمیل آزمایشی را فراهم می‌سازد تا مشخص شود که آیا سامانه به‌صورت کلی توانایی ارسال ایمیل را دارد یا خیر. چنانچه ایمیل آزمایشی نیز ارسال نشود، می‌توان نتیجه گرفت که مشکل از سطح کلی سایت یا تنظیمات سرور است. اما اگر این ایمیل با موفقیت ارسال گردد، احتمالاً مسئله به یک بخش خاص از سایت یا افزونه‌ای مشخص مربوط می‌شود.

انجام این تست ساده، گام اول برای پیدا کردن سرنخ مشکل و انتخاب راه‌حل مناسب است.

دلایل عدم ارسال ایمیل در وردپرس

مشکل ارسال نشدن ایمیل در وردپرس ممکن است به دلایل متعددی رخ دهد که برخی از آن‌ها به تنظیمات داخلی وردپرس یا افزونه‌ها بازمی‌گردد و برخی دیگر ناشی از محدودیت‌های سرور، خطاهای مربوط به سرویس میزبانی یا حتی مسائل امنیتی و ضد اسپم در سرویس‌های گیرنده است. در بسیاری از موارد، این مشکل بدون نشانه‌های واضح اتفاق می‌افتد و تشخیص علت اصلی آن نیازمند بررسی دقیق‌ بخش‌های مختلف سایت است.

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

1- تنظیم نشدن صحیح ایمیل مدیریت

یکی از اولین کارها برای بررسی مشکل ارسال نشدن ایمیل در وردپرس، اطمینان از صحت تنظیمات اولیه در بخش مدیریت سایت است. در این مرحله، باید به مسیر «تنظیمات > عمومی» در پیشخوان وردپرس مراجعه کرده و بررسی نمایید که آدرس ایمیل مدیریت سایت به‌درستی وارد شده باشد. این آدرس ایمیل نقش مهمی در ارسال پیام‌هایی مانند اطلاعیه‌های مدیریتی، هشدارها و سایر اعلان‌های سیستمی ایفا می‌کند.

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

همچنین لازم است بررسی شود که ایمیل وارد شده معتبر بوده و قبلاً تأیید شده باشد. در صورتی که ایمیل مدیریت تغییر داده شده باشد اما هنوز تأیید نشده باشد، وردپرس ممکن است از ارسال ایمیل جلوگیری کند یا آن را به‌درستی پردازش نکند. توصیه می‌شود از یک آدرس ایمیل رسمی و با دامنه معتبر استفاده شود و از وارد کردن ایمیل‌های اشتباه یا ناقص پرهیز گردد، چرا که این موضوع می‌تواند باعث بروز خطا در فرآیند ارسال پیام‌ها شود.

در نهایت، در صورتی که از افزونه‌هایی استفاده می‌شود که امکان تغییر آدرس فرستنده را فراهم می‌سازند (مانند افزونه‌های SMTP)، باید اطمینان حاصل کرد که این تنظیمات با آدرس اصلی مدیریت مغایرت نداشته باشند.

2- اجازه ندادن برای استفاده از تابع mail در PHP توسط هاست

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

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

حال سوال اصلی اینجاست که چرا شرکت‌های میزبانی معمولا اجازه استفاده از تابع mail در php را نمی‌دهند؟

برخی دلایل این سوال عبارتند از:

  • سرور برای ارسال ایمیل آماده نشده است و با هدف دیگری ارائه شده است.
  • تابع mail هیچ محدودیت و احراز هویتی روی ایمیل‌ها انجام نمی‌دهد.
  • ایمیل‌هایی که با استفاده از تابع mail() ارسال می‌شوند، تنظیمات SPF و DKIM روی آن‌ها انجام نشده و باعث می‌شود سرورهای گیرنده آنها را به عنوان اسپم شناسایی کنند یا اصلاً دریافت نکنند.
  • اگر تابع mail() به صورت انبوه یا غیر استاندارد استفاده شود، باعث مصرف بیش از حد منابع سرور می‌شود.

بنابراین حتی در صورتی که تابع mail() در سرور فعال باشد و امکان استفاده از آن وجود داشته باشد، توصیه نمی‌شود که برای ارسال ایمیل‌های سایت وردپرس صرفاً به این روش اکتفا شود. دلیل این امر آن است که ارسال ایمیل از طریق تابع mail() اغلب فاقد اعتبارسنجی‌های لازم، احراز هویت مناسب و زیرساخت‌های امنیتی مانند SPF، DKIM و DMARC است.

3- اسپم شدن ایمیل‌های ارسالی

ممکن است ایمیل‌ها از سایت ما با موفقیت ارسال شوند و به مقصد هم برسند، ولی Spam شوند. اسپم شدن ایمیل هم می‌تواند 2 دلیل داشته باشد:

دلیل اول: در برخی موارد، ممکن است ایمیل‌های ارسالی از سایت وردپرس تنها در یک آدرس ایمیل مشخص (مثلاً Gmail یا Yahoo) به پوشه اسپم منتقل شوند، در حالی که در سایر سرویس‌ها به درستی دریافت می‌گردند. برای اطمینان از این موضوع، می‌توان با استفاده از افزونه‌هایی مانند Check Email یا WP Mail SMTP یک ایمیل تستی به چند آدرس مختلف (از سرویس‌دهندگان متنوع مانند Gmail، Outlook، Yahoo و…) ارسال کرد و نحوه دریافت آن‌ها را مقایسه نمود.

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

  • افزودن آدرس ایمیل فرستنده (مثلاً noreply@yourdomain.com) به لیست مخاطبان (Contacts)
  • علامت‌گذاری ایمیل دریافتی به‌عنوان “Not Spam” یا “This is not junk”
  • ایجاد یک فیلتر یا قانون (Rule) در حساب ایمیل مقصد برای هدایت ایمیل‌های ارسالی از دامنه سایت به صندوق ورودی (Inbox)

اگرچه این روش به حل کامل مشکل کمک نمی‌کند، اما می‌تواند در شرایط خاص که تنها یک گیرنده تحت‌تأثیر قرار گرفته است، راهکاری سریع و مؤثر باشد.

دلیل دوم: در برخی موارد، ممکن است تمامی ایمیل‌های ارسالی از سایت، صرف‌نظر از مقصد آن‌ها، مستقیماً وارد پوشه اسپم شوند. این موضوع نشان‌دهنده آن است که مشکل به‌جای سرویس گیرنده، به ساختار و اعتبار فنی ایمیل‌های ارسالی بر می‌گردد.

در واقع، اسپم شدن ایمیل‌ها یکی از موضوعات پیچیده و تخصصی در حوزه ارسال ایمیل محسوب می‌شود که خود می‌تواند موضوع یک مقاله جداگانه باشد ولی در ادامه دلایل این موضوع را به صورت مختصر توضیح می‌دهیم.

برخی از دلایل رایج که منجر به شناسایی ایمیل‌ها به‌عنوان اسپم می‌شوند عبارت‌اند از:

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

برای بررسی دقیق‌تر وضعیت ایمیل‌های سایت از نظر اسپم، می‌توانید وارد سایت «Mail Tester» شوید. پس از ورود به این سایت، یک آدرس ایمیل آزمایشی در اختیار شما قرار می‌گیرد. کافی است از داخل پیشخوان وردپرس خود یا از طریق کنترل پنل هاست یک ایمیل به همان آدرس ارسال کنید. پس از چند ثانیه، در همان صفحه روی دکمه بررسی کلیک کنید تا گزارش کاملی درباره وضعیت ایمیل شما نمایش داده شود. این گزارش شامل امتیاز اسپم (Spam Score)، وضعیت رکوردهای SPF، DKIM و DMARC، محتوای ایمیل، و سایر عوامل مؤثر در تحویل‌پذیری ایمیل خواهد بود.

سایت www.mail-tester.com
سایت www.mail-tester.com

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

4- قالب و افزونه‌های نصب شده روی وردپرس

قالب و افزونه‌های نصب شده روی وردپرس
قالب و افزونه‌های نصب شده روی وردپرس

اگر مشکل ارسال ایمیل در وردپرس در سایت ما کلی است، می‌توان گفت که قالب و افزونه‌ها هم می‌توانند باعث تداخل شده باشند که بهترین راه‌حل عیب‌یابی و غیرفعال‌سازی آن‌ها است.

برای عیب‌یابی این وضعیت، بهترین روش آن است که سایت را در حال تعمیر قرار دهید و به‌صورت موقت تمامی افزونه‌ها را غیرفعال کرده و از یک قالب پیش‌فرض وردپرس (مانند Twenty Twenty-Five) استفاده کنید. سپس با ارسال یک ایمیل تستی بررسی کنید که آیا مشکل همچنان پابرجاست یا خیر. اگر پس از غیرفعال‌سازی افزونه‌ها و تغییر قالب، ارسال ایمیل به‌درستی انجام شد، می‌توان نتیجه گرفت که یکی از افزونه‌ها یا خود قالب باعث اختلال بوده است. در این حالت، باید افزونه‌ها را تک به تک فعال کنید و پس از فعال‌سازی هر مورد، ارسال ایمیل را مجدداً تست کنید تا عامل دقیق مشکل را شناسایی شود.

از سوی دیگر، اگر مشکل ارسال ایمیل صرفاً به یک قابلیت خاص در یک افزونه یا قالب محدود می‌شود – و طبق تست قبلی با افزونه Check Email مشخص شده که سایر ایمیل‌ها بدون مشکل ارسال می‌شوند – در این صورت به‌احتمال زیاد، تنظیمات آن افزونه یا قالب خاص به‌درستی انجام نشده یا با سایر بخش‌های سایت سازگاری ندارد. در چنین شرایطی لازم است ابتدا مستندات رسمی افزونه یا قالب بررسی شود و تنظیمات مربوط به ایمیل بررسی گردد. (برای این موضوع می‌توانید با پشتیبانی افزونه یا قالب نیز در ارتباط باشید.)

راه‌حل مشکل ارسال ایمیل در وردپرس

راه‌حل مشکل ارسال ایمیل در وردپرس
راه‌حل مشکل ارسال ایمیل در وردپرس

تا اینجا دلایل مختلفی که ممکن است باعث ارسال نشدن یا اسپم شدن ایمیل‌های وردپرس شوند را بررسی کردیم. حالا نوبت آن است که برویم سراغ راه‌حل‌ها و ببینیم چطور می‌توان این مشکلات را به‌صورت عملی برطرف کرد.

بهترین راه‌حل برای حل مشکل ارسال نشدن ایمیل‌ها در وردپرس، چه در مواردی که ایمیل‌ها اصلاً ارسال نمی‌شوند و چه در مواقعی که به مقصد نمی‌رسند یا به پوشه اسپم منتقل می‌شوند، استفاده از پروتکل SMTP برای ارسال ایمیل است.

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

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

اما اگر هاست شما به طور کلی سرویس ایمیل ارائه نمی‌دهد یا کیفیت آن مناسب نیست، می‌توانید از سرویس‌های ارسال ایمیل شخص ثالث مانند Gmail، Zoho Mail، Sendinblue، Mailgun یا SendGrid استفاده کنید. این سرویس‌ها اغلب امکانات حرفه‌ای‌تری برای ارسال و مدیریت ایمیل‌ها ارائه می‌دهند و بسیاری از آن‌ها پلن‌های رایگان نیز دارند که برای سایت‌های کوچک و متوسط کافی است.

پس از اینکه مشخصات مربوط به SMTP دریافت شد، حالا می‌توانید با این مشخصات آن را در وردپرس استفاده کنید. دو روش برای استفاده از این روش در وردپرس وجود دارد که در ادامه به بررسی آن‌ها خواهیم پرداخت.

روش اول: استفاده از افزونه WP Mail SMTP

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

برای استفاده از این افزونه کافی است به مسیر «افزونه‌ها > افزودن» در پیشخوان وردپرس بروید و عبارت “WP Mail SMTP” را جستجو کرده و آن را نصب و فعال کنید. پس از نصب افزونه، همانند تصویر زیر به تنظیمات افزونه مراجعه کنید و در ابتدا ایمیل ارسال کننده و نام ارسال کننده را مشخص کنید.(مابقی تنظیمات را نیز می‌توانید طبق توضیحات فعال یا غیرفعال کنید.)

پس از انجام تنظیمات فوق باید پایین‌تر رفته و از قسمت ارسال کننده ایمیل گزینه SMTPهای دیگر” را انتخاب کنید.

ارسال کننده ایمیل
ارسال کننده ایمیل

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

  • میزبان SMTP (مثلاً smtp.gmail.com یا smtp.yourdomain.com)
  • نوع رمزگذاری (SSL یا TLS)
  • شماره پورت (معمولاً 465 یا 587)
  • احراز هویت (روشن)
  • نام کاربری (معمولاً همان آدرس ایمیل)
  • رمز عبور یا کلید اتصال SMTP

پس از وارد کردن مشخصات موردنیاز روی دکمه ذخیره تغییرات کلیک کنید تا تنطیمات انجام شده اعمال شوند.

روش دوم: استفاده از کدنویسی برای فعال‌سازی SMTP در وردپرس

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

برای این منظور، کافی است قطعه کدی را که تنظیمات SMTP را مشخص می‌کند، به فایل functions.php قالب فعال سایت خود اضافه کنید. با این کار، وردپرس از این پس تمام ایمیل‌ها را از طریق مشخصات SMTP وارد شده ارسال خواهد کرد.

function my_custom_smtp_config( $phpmailer ) {
    $phpmailer->isSMTP();
    $phpmailer->Host       = 'smtp.example.com';
    $phpmailer->SMTPAuth   = true;
    $phpmailer->Port       = 587;
    $phpmailer->Username   = 'your-email@example.com';
    $phpmailer->Password   = 'password';
    $phpmailer->SMTPSecure = 'tls';
    $phpmailer->From       = 'your-email@example.com';
    $phpmailer->FromName   = 'Your Name or Website';
}
add_action( 'phpmailer_init', 'my_custom_smtp_config' );

اطلاعات موجود در کد بالا به شرح زیر تکمیل شوند:
Host:
آدرس سرور SMTP
SMTPAuth: فعال بودن احراز هویت که یا باید true باشد یا false
Port: پورت 587 برای رمزنگاری TLS و پورت 465 برای رمزنگاری SSL
Username: نام کاربری SMTP
Password: پسورد SMTP
SMTPSecure: نوع رمزنگاری که یا می‌تواند TLS باشد یا SSL
From: آدرس ایمیل فرستنده
FromName: نام فرستنده ایمیل

نکات مهم هنگام استفاده از این روش

  • حتماً پیش از اعمال تغییرات، از فایل functions.php نسخه پشتیبان تهیه کنید.
  • این روش فقط برای کسانی مناسب است که با کدنویسی آشنا هستند و قالب سایت خود را شخصی‌سازی کرده‌اند.

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

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

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

جلوگیری از اسپم شدن ایمیل‌ها از نظر محتوای پیام
جلوگیری از اسپم شدن ایمیل‌ها از نظر محتوای پیام

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

از کلمه‌های حساس در عنوان و متن ایمیل خودداری کنید.
کلمات و عباراتی مانند test، free, buy now, click here، offer و موارد مشابه اغلب توسط فیلترهای ضد اسپم شناسایی شده و باعث اسپم شدن ایمیل می‌شوند.

از واژه “test” در عنوان یا متن ایمیل استفاده نکنید.
ارسال ایمیلی با عنوان‌هایی مثل “test” یا “hello test” معمولاً از سوی سرویس‌های ایمیل مشکوک تلقی شده و به‌صورت خودکار به پوشه اسپم منتقل می‌شود.

از ارسال ایمیل‌های زیاد در مدت زمان کوتاه خودداری کنید.
ارسال تعداد زیادی ایمیل به کاربران در یک بازه زمانی کوتاه (مثلاً هنگام استفاده از افزونه‌های خبرنامه یا فرم‌های اطلاع‌رسانی) می‌تواند به عنوان رفتار اسپم تشخیص داده شود. حتماً از زمان‌بندی مناسب یا صف‌بندی (queue) برای ارسال تدریجی استفاده کنید.

از محتوای بیش از حد تبلیغاتی یا گرافیکی دوری کنید.
ایمیل‌هایی که فقط شامل تصاویر هستند یا محتوای متنی بسیار کمی دارند، معمولاً مشکوک تلقی می‌شوند. بهتر است همیشه ترکیبی از متن ساده و تصویر استفاده کنید.

از فرمت استاندارد HTML در ایمیل استفاده کنید.
ایمیل‌هایی که دارای کد HTML زیاد، استایل‌های نادرست یا تگ‌های مشکوک هستند بیشتر احتمال دارد اسپم شوند. سعی کنید ایمیل‌ها ساده، خوانا و با ساختار مشخص باشند.

جمع بندی و صحبت پایانی

در این مقاله سعی کردیم رایج‌ترین دلایل ارسال نشدن و اسپم شدن ایمیل‌ها در وردپرس را بررسی کنیم و راه‌حل‌های عملی برای رفع این مشکلات ارائه دهیم. از بررسی تنظیمات اولیه وردپرس گرفته تا استفاده از پروتکل SMTP و رعایت نکات محتوایی، هرکدام از این موارد می‌توانند نقش مهمی در بهبود وضعیت ارسال ایمیل‌ها داشته باشند. امیدواریم این مقاله برای شما مفید واقع شده باشد. اگر سوالی پیرامون این موضوع دارید می‌توانید از قسمت نظرات آن را مطرح کنید.

نظرت راجب این مطلب چیه؟

میانگین امتیازات 5 از 5 | تعداد رای: 1 نفر
  • خیلی عالی
  • عالی
  • خوب
  • بد
  • خیلی بد
اگر سوال یا نظری راجب این مطلب دارید، به اشتراک بگذارید. ارسال دیدگاه

نوشتن دیدگاه

پس از ارسال دیدگاه، ایمیل شما به صورت عمومی نمایش داده نخواهد شد.