بد نیست بدونین که توی سایت من افرادی که کامنت میزارن موقعی که به کامنتشون پاسخ میدم یه ایمیل براشون میره که مطلعشون کنه که پاسخ دریافت کردن. سر مشکل ایمیل وردپرس هیچکدوم از این ایمیلها ارسال نمیشدن! حدود 3 ماه بود که با مشکل ارسال نشدن ایمیلای اتوماتیک وبسایتم دست و پنجه نرم میکردم! هربار یه تلاشی میکردم تا مشکل رو حل کنم اما بعد از یه مدت خسته میشدم. خلاصه دیشب ساعت 3 بود که تصمیم گرفتم مشکلم ایمیل سایتمو واقعا حل کنم و امروز ساعت 2 ظهر مشکلم حل شد!
اگر شماهم میخواین این قابلیت توی سایت وردپرسیتون فعال کنین میتونین پلاگین Comment reply Notification رو نصب کنین که فوق العاده کاربردیه. اما بریم سر مشکل خودمون!
دلایل مختلف مشکل ارسال نشدن ایمیل ها در وردپرس
اگر فرض رو بر این بگیریم که مطمئنید ایمیلایی که میفرستید کلا ارسال نمیشه (حتی بانس هم نمیشه!) باید دلیل این مشکل رو سمت سرورها و هاست بررسی کنیم!
ارسال نشدن ایمیل در وردپرس میتونه دلایل زیادی داشته باشه. پیشنهاد میکنم سرسری یه نگاه به لیست زیر بندازین که شامل اصلی ترین مشکلای ایمیل هست.
- بلاک شدن IP وب سرور توسط میل سرور
- تغییرات IP میل سرور و یا وب سرور (برای هاست هایی که با IP کار میکنن)
- عدم وجود MX رکورد یا وجود MX رکورد اشتباه در DNS Zone وب سرور
- تنظیمات اشتباه CloudFlare به ویژه در بخش DNS
- ایجاد ساب دامین mail در وب سرور!
- تنظیمات اشتباه SMTP یا یوزرنیم و پسوورد اشتباه
- مشکل SSL Certificate از طرف وب سرور یا میل سرور
- ریستریکت شدن تابع ()php mail توسط هاست (تابع پیشفرض ارسال ایمیل وردپرس)
البته اینها مطمئناً همه دلایل به مشکل خوردن ایمیلها نیستن! اما بخش زیادی از مشکلات ایمیلی که من دیدم اینا هستن. پس بیاین پله پله بریم جلو مشکلمونو پیدا کنیم!
برای پیدا کردن منبع مشکل دوتا روش داریم. اول اینکه با نصب پلاگین وضعیت ایمیلهای ارسال شدرو بررسی کنیم و مشکلشونو بفهمیم (این روش رو خیلی توصیه میکنم. اگر جواب نگرفتین بعد برین سراغ روش دوم!). حالت دومشم اینه که پله پله با بررسی ارورهای معمول ایمیل به راهحل مشکلمون برسیم. مطمئناً ما اولین نفر نیستیم که به اون ارور میخوریم و آخرین نفر هم نخواهیم بود! بریم سر روش اول:
لاگ گرفتن از ایمیل های ارسالی وردپرس برای پیدا کردن دلیل مشکلات ارسال نشدن ایمیل ها
در این روش، پلاگین ساده و کاربردی WP Mail Logging رو نصب میکنین و پس از ارسال هر ایمیلی که وردپرس اتومات یا به دستور شما میفرسته یه لاگ توسط این پلاگین گرفته میشه.
- پلاگین WordPress Mail Logging برای لاگ گرفتن از ایمیل های وردپرس نصب کنین.
- از طریق وردپرس یه ایمیل تستی ارسال کنین (مثلا یه کامنت فیک برای خودتون بزارین یا یه محصول سفارش بدین که ایمیل بفرسته)
- دو دقیقه صبر کنید و بعد توی منو ادمین دنبال WP Mail Log بگردین و بازش کنین.
- اینجا میتونین ایمیل های ارسال شده از طرف وردپرس و وضعیتشون رو ببینین.
- اگر ارسال ایمیل به مشکل خورده باشه یه علامت تعجب سیاه میاد توی بخش Error.
- موس رو روی علامت تعجب سیاه نگه دارین تا اروری که دریافت شدرو نشونتون بده.
خب حالا از روی اروری که کپچر شده میتونین متوجه بشین مشکل از کجاست!
حل مشکل ارسال نشدن ایمیل با توجه به ارور کپچر شده
من اینجا چند سری از ارورهای اصلی که خودم بهشون خرودم رو اینجا مینویسم. اگر موضوعی بنظرتون رسید بنویسید تا به لیست اضافه کنم و کمک بشه به بقیه دوستان :))
ارور Could not instantiate PHP mail() function یا “()Failed to call PHP function “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
این مشکل هم خیلی واضحه دیگه! یوزر نیم یا پسورد اشتباهه! یادتون باشه ساختار دیفالت یوزرنیم ایمیلهای تحت دامنه کامل و مثل این example@farzaad.com هست و باید کامل با دامنه وارد بشه و با یوزرنیم example خالی نمیتونین لاگین کنین!
خب امیدوارم مشکلتون حل شده باشه. اگر نشده ادامشو بخونین بلکه فرجی شد 😐
بررسی مشکل های متداول ارسال نشدن ایمیل و پیدا کردن راه حل مناسب
فرض کنید ایمیل problem@farzaad.com ایمیلی بوده که از طرف وردپرس باهاش ایمیلها ارسال میشده و حالا دچار مشکل شده. پله پله پیش میریم تا متوجه بشیم منبع مشکل ایمیل از کجاست! راه حلهای همه رو هم بالا توضیح دادم دیگه! :))
1- آیا قبلاً همه چیز خیلی خوب پیش میرفته و بدون هیچ تغییری از طرف شما یهو مشکل ارسال ایمیل پیش اومده؟
اگر جوابتون مثبته توی این حالت احتمال این مشکلا هست:
- از کار افتادن فانکشن php mail
- عوض شدن IP یا آدرس میل سرور
- بلاک شدن IP وب سرور توسط میل سرور
- مشکل ssl سرورها
- فایروال میل سرور
- داون یا خاموش شدن وب سرور
- ایجاد ساب دامین mail
2- میتونین با وب میل از آدرس problem@farzaad.com به دیگران ایمیل ارسال کنین؟
اگر آره 100% وب سرورتون در اتصال به میل سرور مشکل داره و مشکل از DNS و CloudFlare سایتتون نیست! چون اگر DNS مشکل داشته باشه نمیتونید ایمیلی ارسال کنین. پس باید سمت وب سرور بگردید دنبال راه حل:
- از کار افتادن فانکشن php mail
- اطلاعات اتصال غلط در SMTP
- بلاک شدن IP وب سرور توسط میل سرور
- فایروال میل سرور
3- آیا ایمیل هایی که به آدرس problem@farzaad.com ارسال میکنید در وب میل سایتتون دریافت میکنین؟
اگر ایمیلها نه ارسال و نه دریافت میشن چک کنین احتمالا یکی از مشکلات زیر هست:
- مشکل DNS یا کلودفلر
- مشکل SSL بین میل سرور و وب سرور
- داون یا خاموش شدن وب سرور
- ایجاد ساب دامین mail
- عوض شدن IP یا آدرس میل سرور
امیدوارم مشکلتون ارسال نشدن ایمیلهای سایتتون حل شده باشه. اگر شماهم تجربهای در این زمینه دارید که فکر میکنین به درد دیگران میخوره حتما توی بخش کامنت ها بنویسید که اضافه کنم. همچنین اگر نظری دارین خوشحال میشم بشنوم :))