مشکل ارسال نشدن ایمیل سایت در وردپرس و راه حل مشکلات و آموزش تنظیم SMTP

فرزاد جوزقی
فرزاد جوزقی
به وبلاگ شخصی من خوش اومدین. بیست و چهار سالمه و چند ساله که کار طراحی تم و پلاگین وردپرسی انجام میدم اما این چند وقته شیفت کردم سمت بک‌اند و در زمینه طراحی و توسعه وب‌سایت با زبون PHP مشغول به کارم. مطالب وبلاگم هر چیزیه که به نظرم به جالب باشه یا به درد بخور. خوشحال میشم نظراتتونو بشنوم:)

این مطلب رو با دوستاتون به اشتراک بزارید!

سر فصل‌های این مطلب
مطلب

بد نیست بدونین که توی سایت من افرادی که کامنت میزارن موقعی که به کامنتشون پاسخ میدم یه ایمیل براشون میره که مطلعشون کنه که پاسخ دریافت کردن. سر مشکل ایمیل وردپرس هیچکدوم از این ایمیل‌ها ارسال نمیشدن! حدود 3 ماه بود که با مشکل ارسال نشدن ایمیلای اتوماتیک وب‌سایتم دست و پنجه نرم میکردم! هربار یه تلاشی میکردم تا مشکل رو حل کنم اما بعد از یه مدت خسته میشدم. خلاصه دیشب ساعت 3 بود که تصمیم گرفتم مشکلم ایمیل سایتمو واقعا حل کنم و امروز ساعت 2 ظهر مشکلم حل شد!

اگر شماهم میخواین این قابلیت توی سایت وردپرسیتون فعال کنین میتونین پلاگین Comment reply Notification رو نصب کنین که فوق العاده کاربردیه. اما بریم سر مشکل خودمون!

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

اگر فرض رو بر این بگیریم که مطمئنید ایمیلایی که میفرستید کلا ارسال نمیشه (حتی بانس هم نمیشه!) باید دلیل این مشکل رو سمت سرورها و هاست بررسی کنیم!

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

  • بلاک شدن IP وب سرور توسط میل سرور
  • تغییرات IP میل سرور و یا وب سرور (برای هاست هایی که با IP کار میکنن)
  • عدم وجود MX رکورد یا وجود MX رکورد اشتباه در DNS Zone وب سرور
  • تنظیمات اشتباه CloudFlare به ویژه در بخش DNS
  • ایجاد ساب دامین mail در وب سرور!
  • تنظیمات اشتباه SMTP یا یوزرنیم و پسوورد اشتباه
  • مشکل SSL Certificate از طرف وب سرور یا میل سرور
  • ریستریکت شدن تابع ()php mail توسط هاست (تابع پیشفرض ارسال ایمیل وردپرس)

البته این‌ها مطمئناً همه دلایل به مشکل خوردن ایمیل‌ها نیستن! اما بخش زیادی از مشکلات ایمیلی که من دیدم اینا هستن. پس بیاین پله پله بریم جلو مشکلمونو پیدا کنیم!

برای پیدا کردن منبع مشکل دوتا روش داریم. اول اینکه با نصب پلاگین وضعیت ایمیل‌های ارسال شدرو بررسی کنیم و مشکلشونو بفهمیم (این روش رو خیلی توصیه میکنم. اگر جواب نگرفتین بعد برین سراغ روش دوم!). حالت دومشم اینه که پله پله با بررسی ارورهای معمول ایمیل به راه‌حل مشکلمون برسیم. مطمئناً ما اولین نفر نیستیم که به اون ارور میخوریم و آخرین نفر هم نخواهیم بود! بریم سر روش اول:

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

در این روش، پلاگین ساده و کاربردی WP Mail Logging رو نصب میکنین و پس از ارسال هر ایمیلی که وردپرس اتومات یا به دستور شما میفرسته یه لاگ توسط این پلاگین گرفته میشه.

  1. پلاگین WordPress Mail Logging برای لاگ گرفتن از ایمیل های وردپرس نصب کنین.
  2. از طریق وردپرس یه ایمیل تستی ارسال کنین (مثلا یه کامنت فیک برای خودتون بزارین یا یه محصول سفارش بدین که ایمیل بفرسته)
  3. دو دقیقه صبر کنید و بعد توی منو ادمین دنبال WP Mail Log بگردین و بازش کنین.
  4. اینجا میتونین ایمیل های ارسال شده از طرف وردپرس و وضعیتشون رو ببینین.
  5. اگر ارسال ایمیل به مشکل خورده باشه یه علامت تعجب سیاه میاد توی بخش Error.
  6. موس رو روی علامت تعجب سیاه نگه دارین تا اروری که دریافت شدرو نشونتون بده.
لاگ ایمیل های ارسال شده وردپرس
لاگ های ایمیل های ارسال شده از وردپرس و نمایش ارور ارسال نشدن ایمیل

خب حالا از روی اروری که کپچر شده میتونین متوجه بشین مشکل از کجاست!

حل مشکل ارسال نشدن ایمیل با توجه به ارور کپچر شده

من اینجا چند سری از ارورهای اصلی که خودم بهشون خرودم رو اینجا مینویسم. اگر موضوعی بنظرتون رسید بنویسید تا به لیست اضافه کنم و کمک بشه به بقیه دوستان :))

ارور Could not instantiate PHP mail() function یا “()Failed to call PHP function “mail

و در صورتی که سایتتون فارسی باشه این ارور:

ایمیل نمی‌تواند فرستاده شود. دلیل ممکن: میزبان شما ممکن است تابع mail() را از کار انداخته باشد.

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

این ارورها که هر سه تاشون یه معنی رو میدن اخیرا خیلی شایع شدن. و معنیشون اینه که فراخونی تابع mail در هاستتون (توسط شرکت میزبان) ممنوع شده. این مشکلی بود که ما هم بهش خورده بودیم! دلیلشم اینه اخیراً به دلیل مشکلای امنیتی که تابع php mail داشته بسیاری از هاستینگ‌ها ران شدن این فانکشن توی هاست‌هاشون ممنوع کردن. اگر به WHM هاستتون دسترسی ندارید باید تیکت بزنین که اجاه اجرای این تابع رو بهتون بدن (که در اکثر موارد این کارو نمیکنن!). راه حل دیگشم اراسل ایمیل‌های وردپرس با استفاده از پروتکل SMTP یا Simple Mail Transfer Protocol هست که این مشکل رو به کل حذف میکنه. تنظیمش 5 دقیقه طول نمیکشه!:))

ارور Failed to connect to specified server یا Contact failed

برای این ارور چند حالت وجود داره. ممکنه IP وب سرورتون توسط میل سرور بلاک شده باشه (به دلایل مختلف، مثل ارسال ناگهانی حجم زیادی از ایمیل و…) برای حل این مشکل باید به هاستینگ تیکت بزنید. همینطور ممکنه فایروال جلوتونو گرفته باشه.

حالت بعدی اینه که اگر دارید از SMTP استفاده میکنین آدرس یا آی‌پی یا پورت میل سرور رو اشتباه زدین. همینطور ممکنه میل سرور داون (یا خاموش) شده باشه یا تغییر IP داده باشه!

عجیب ترین مشکل اینه که اگه یه ساب دامین mail روی سایتتون ساخته باشین این ارورو میبینین! اینجوری کلا وب سرور نمیتونه میل سرورتون وصل بشه (چون پیشفرض میل سرور هر دامنه، سابدامین mail اونه. مثلا سایت من farzaad.com میل سرورش mail.farzaad.com) چون دیگه ساب دامین mail دست میل سرور نیست بلکه دست خود وب سروره! و ریکوست‌هایی که ارسال میشن رسما دراپ میشن 😐 پس یادتون نره ساب دامین mail نسازین!

یه نکته مهم! یادتون نره که حتی اگر میل سرورتون و وب سرور روی یه سرور باشن بازم لازمه به بهم وصل بشن و وب سرور بدونه که میل سرور روی خودشه تا بتونه باهاش ارتباط برقرار کنه!

حالت بعدی اینه که DNS رو دست کاری کرده باشین (چه از طریق کنترل پنل هاست و چه از طریق کلودفلر) و MX رکوردهای میل سرور رو خراب کرده باشین که باید دوباره بسازین براش. به صورت پیشفرض هر دامنه باید یه MX رکورد به اسم خودش و به IP میل سرورش داشته باشه. (مثلا این MX Record برای سایت من میشه farzaad.com)

حالت بسیار مهم بعدی، اگر برای اتصال به میل سرور از SSL استفاده میکنید درصورتی که SSL میل سرور یا وب سرور مشکل پیدا کرده باشه نمیتونن به هم کانکت بشن!

ارور Request timed out یا Host not responding

این گروه از ارورها با گروه بالا نقاط مشترک زیادی دارن. مشکل ssl یا آدرس اشتباه میل سرور و فایروال و… همه میتونن باعث این ارورهم بشن. البته موقعی که فشار روی سرور باشه هم این ارور دیده میشه.

ارور Authentication failed یا Invalid login credentials – wrong username or password

این مشکل هم خیلی واضحه دیگه! یوزر نیم یا پسورد اشتباهه! یادتون باشه ساختار دیفالت یوزرنیم ایمیل‌های تحت دامنه کامل و مثل این [email protected] هست و باید کامل با دامنه وارد بشه و با یوزرنیم example خالی نمیتونین لاگین کنین!


خب امیدوارم مشکلتون حل شده باشه. اگر نشده ادامشو بخونین بلکه فرجی شد 😐

بررسی مشکل های متداول ارسال نشدن ایمیل و پیدا کردن راه حل مناسب

فرض کنید ایمیل [email protected] ایمیلی بوده که از طرف وردپرس باهاش ایمیل‌ها ارسال می‌شده و حالا دچار مشکل شده. پله پله پیش میریم تا متوجه بشیم منبع مشکل ایمیل از کجاست! راه حل‌های همه رو هم بالا توضیح دادم دیگه! :))

1- آیا قبلاً همه چیز خیلی خوب پیش میرفته و بدون هیچ تغییری از طرف شما یهو مشکل ارسال ایمیل پیش اومده؟

اگر جوابتون مثبته توی این حالت احتمال این مشکلا هست:

  • از کار افتادن فانکشن php mail
  • عوض شدن IP یا آدرس میل سرور
  • بلاک شدن IP وب سرور توسط میل سرور
  • مشکل ssl سرورها
  • فایروال میل سرور
  • داون یا خاموش شدن وب سرور
  • ایجاد ساب دامین mail

2- میتونین با وب میل از آدرس [email protected] به دیگران ایمیل ارسال کنین؟

اگر آره 100% وب سرورتون در اتصال به میل سرور مشکل داره و مشکل از DNS و CloudFlare سایتتون نیست! چون اگر DNS مشکل داشته باشه نمیتونید ایمیلی ارسال کنین. پس باید سمت وب سرور بگردید دنبال راه حل:

  • از کار افتادن فانکشن php mail
  • اطلاعات اتصال غلط در SMTP
  • بلاک شدن IP وب سرور توسط میل سرور
  • فایروال میل سرور

3- آیا ایمیل هایی که به آدرس [email protected] ارسال میکنید در وب میل سایتتون دریافت میکنین؟

اگر ایمیل‌ها نه ارسال و نه دریافت میشن چک کنین احتمالا یکی از مشکلات زیر هست:

  • مشکل DNS یا کلودفلر
  • مشکل SSL بین میل سرور و وب سرور
  • داون یا خاموش شدن وب سرور
  • ایجاد ساب دامین mail
  • عوض شدن IP یا آدرس میل سرور

امیدوارم مشکلتون ارسال نشدن ایمیلهای سایتتون حل شده باشه. اگر شماهم تجربه‌ای در این زمینه دارید که فکر میکنین به درد دیگران میخوره حتما توی بخش کامنت ها بنویسید که اضافه کنم. همچنین اگر نظری دارین خوشحال میشم بشنوم :))

 

این مطلب رو با دوستاتون به اشتراک بزارید!

درباره من
فرزاد جوزقی

فرزاد جوزقی

به وبلاگ شخصی من خوش اومدین. بیست و چهار سالمه و چند ساله که کار طراحی تم و پلاگین وردپرسی انجام میدم اما این چند وقته شیفت کردم سمت بک‌اند و در زمینه طراحی و توسعه وب‌سایت با زبون PHP مشغول به کارم. مطالب وبلاگم هر چیزیه که به نظرم به جالب باشه یا به درد بخور. خوشحال میشم نظراتتونو بشنوم:)
مطالب مرتبط
سوالات پر تکرار
توی این مطلب کامل توضیح دادم که چطور میتونین لاگ بگیرین و ایمیلاتونو ترابلشوت کنین.
این یه مشکل بسیار اساسی توی سایت‌های وردپرسی هست. آموزش کاملش رو نوشتم که چطور درستش کنین!
مشکلات ایمیل میتونن بخاطر محدودیت هایی که هاستینگ اعمال میکنه یا تحریم ها به وجود بیان.
چیزی به عنوان بهترین راه وجود نداره. اما ارسال از طریق SMTP یکی از بهترین روش هاست.
نیاز به پلاگین هست که معرفی کردم. تنظیماتش رو هم کامل توضیح دادم.
تگ‌ها
کامنت‌ها
  1. سلام.لطفا خودتون به سیستم من متصل بشید و از طریق نرم افزار anydesk به سیستم من متصل بشید و مشکل منو حل کنید چون هیچی از مقالات ورد پرس نفهمیدم لطفا کمکم کنید و به سیستم من متصل بشید تا مشکل من حل بشه خودتون باید برام حل کنید مشکل سایت eqsist.com رو ممنون میشم

    پاسخ
  2. سلام. لطفا هر 2 ارور را دقیق توضیح دهید:
    erro1: https://www.eqsist.com‘ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.
    error2 : DevTools failed to load source map: Could not load content for https://code.tidio.co/render.37e3a46cca72f53ace00.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE

    پاسخ
    • سلام.
      ارور اول دلیلش استفاده از فایل (عکس، فایل JS یا CSS یا ویدیو یا هر جو رفایل دیگه) از سایت eqsist هست که Access-Control-Allow-Origin نداره. اگر توی اون صفحه کنسول مرورگر (DevTools Console) رو هم چک کنید همین ارورو میبینید. داستانش اینه که اون سایت مقصد به سایتای دیگه اجازه استفاده از فایلای آپلود شده توی سایتشو نمیده. برای از بین بردن ارورش باید فایلی که مشکل داررو دانلود کنید و توی هاست خودتون آپلود کنید و آدرس جدید رو جایگزین کنید.
      ارور دوم هم دلیلش اشتباه بودن آدرسه. همون آدرس رو توی مرورگر باز کنید میبینید ارور 404 میده. از داخل کد حذف یا تصحیحش کنید اون لینک رو درست میشه.

      پاسخ
  3. ارور میدهد: has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.

    پاسخ
  4. با سلام ببخشید من وقتی ایمیل میفرستم ایمیل من ارسال ناموفق دارد و میگه ارسال موفق نشد لطفا توضیح دهید چرا؟؟
    Message not delivered

    پاسخ
  5. سلام من هم مشکل ارسال ایمیل دارم و با خواندن این مطلب هم نتونستم حلش کنم. لطفا کمک کنید
    مشکل منم اینه که ایمیل ها ارسال میشه ولی چیزی دریافت نمیکنه گیرنده! (اینو توسط افزونه گزارش گیری که معرفی کردید فهمیدم که ایمیل ارسال میشه ولی دریافت نمیشه)
    یکی از دوستان گفتن که با برداشتن ساب دامین mail مشکل حل شده ولی من هیچ ساب دامینی اصلا ندارم.
    لطفا کمک کنید

    پاسخ
  6. سلام واثعا ممنونم ازتون من چند ماه بود نمیتونستم هیچ کاربر جدیدی واسه سایتم داشته باشم خدا خیرتون بده

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

    پاسخ
  8. ببین داداش یعنی واقعا دمت گرم
    خدا خیرت بده
    خیلی عجیب بود مشکل من.ارسال مبشد اما چیزی نمیرسید دست گیرنده!
    تا اون قسمتی که گفتید ساب دامین mail روی سرور هست رو باید بردارید و برداشتم.
    الان دیگه خیلیییی خوشحالم که مشکل حل شده
    حدودا 1 هفته اس درگیر این موضوع بودم
    بازم مرسی

    پاسخ
  9. سلام میشه یه راهنمایی کنید
    من سایت رو روی cloudflare گذاشتم ولی ایمیلش کار نمی کنه متن هم کمکی بهم نکرد

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

    جالب اینه روی هاستم همین قالب رو دوباره نصب کردم و اونجا مشکلی نیست

    واقعا نمیتونم بفهمم مشکل چیه.

    پاسخ
  11. هاستینگ ها فقط دو سه ماه اول خوبن بقیه دیگه خراب میشن.
    معروفترین ها هم بهترین ها هستند هر مشکلی داشته باشی میگن از سمت سرور ما نیست.
    الان من هاست عوض کردم ایمیل از کار افتاده میگه از سمت ما مشکلی نیست. 🙂
    یه هاستی که همه میدن ماهی 10 تومن رو میدن 100 تومن چون معروفن
    تقریبا برای سایت هام بیش از 20 بار عوض کردم از صغیر و کبیر همه یجورن.
    بهترین کار سرور اختصاصیه اونم مستقیم بگیری نه واسطه های ایرانی

    پاسخ
  12. توضیحات جالبی بود
    حیفه که نظر نگذارم.

    سپاس از کمکتون
    چیزی که من فهمیدم و تجربه کردم همه چی دست هاستینگته تامام

    پاسخ

دیدگاهتان را بنویسید

این مطلب رو با دوستاتون به اشتراک بزارید!