رفع مشکل ارسال ایمیل در وردپرس
یکی از مشکلاتی که در وردپرس ممکن است با آن سر و کار داشته باشیم مشکل ارسال ایمیل در وردپرس است که ایمیلهای ارسالی برای ثبت نام کاربران، اطلاع از دیدگاهها و سفارشات(برای مدیر سایت) و کلا هر ایمیلی که چه برای مدیر سایت و چه برای کاربران ارسال میشود دچار مشکل شده و ارسال نگردد.
بهترین راهکار چه در حالتی که ایمیلهای شما ارسال شوند و چه در حالتی که با مشکل ارسال نشدن ایمیل وردپرس مواجه شده باشید این است که از یک هاست ایمیل یا سرور SMTP برای ارسال ایمیلهای سایت استفاده کنید. چرا که هم امکان شخصی سازی ایمیلها را دارید و هم اینکه سایت شما در حالتی که تعداد ایمیل زیادی ارسال میکنید به علت تعداد ارسال بالا ساسپند نشده یا کندی در آن رخ نخواهد داد.
آموزش رفع مشکل ارسال ایمیل در وردپرس
در ادامه این مقاله به معرفی نحوه رفع مشکل ارسال ایمیل در وردپرس میپردازم و دلایلی که باعث ارسال نشدن ایمیلها میشوند را بررسی میکنم. سپس به معرفی راهکاری که برای حل این مشکل دارد پرداخته و در نهایت به معرفی و کانفیگ تنظیمات افزونه SMTP وردپرس برای حل این مشکل میپردازم. پس تا پایان با من همراه باشید.
علت ارسال نشدن ایمیل وردپرس چیست؟
دلایل مختلفی برای عدم ارسال ایمیل در وردپرس و ووکامرس وجود دارد که بیشترین علت آن به میزبانی هاست مربوط میشود. مگر اینکه اختلالی در وردپرس رخ داده باشد که تابع ایمیل وردپرس به درستی کار نکند.
کار نکردن تابع ایمیل در هاست
اولین دلیلی که باعث ارسال نشدن ایمیل وردپرس میشود، این است که تابع ایمیل هاست دچار مشکل شده و ایمیلهای هاست ارسال نمیشوند. برای این مواقع میتوانید برای اطمینان از موضوع اگر روی دامنه از ایمیل اختصاصی info یا ایمیل با هر آدرس دیگری استفاده کردید، یک ایمیل برای حساب جیمیل یا یاهو خود ارسال کرده و مطمئن شوید که تابع ایمیل هاست کار میکند.
اگر ایمیل ارسال شد و مشکلی وجود نداشت، دلیل ارسال نشدن ایمیل در وردپرس مربوط به اسکریپت یا محدودیتهای دیگر است که در ادامه بررسی میکنم. اگر اگر ایمیل ارسال نشد، ممکن است در این زمان هاستینگ در حال آپدیت نرمافزارهای روی سرور باشد که باید چند دقیقهای صبر کرده و دوباره درخواست خود را برای ارسال ایمیل انجام دهید.
محدودیتهای اعمال شده در هاست
همانطور که میدانید شرکتهای هاست یک سروری که از دیتاسنتر خریداری یا اجاره میکنند، آن را به کمک سیستم عامل و نرمافزارهای موجود به چندین بخش تقسیم میکنند که هر یک از این بخشها یک هاست نام دارد. بر روی هر یک از این هاستها نیز یک سایت میزبانی میشود.
نتیجه میگیریم که منابع سخت افزاری که شامل مقدار CPU، مقدار رم، حافظه و… هستند به صورت اشتراکی بین این هاستها تقسیم بندی شده است. از آنجایی که ارسال ایمیل خود نیاز به منابع بالایی دارد، شرکتهای هاست این مورد را نیز محدود میکنند تا منابع صرفا توسط یک هاست مصرف نشود و بار ترافیکی زیادی نیز توسط یکی از سایتها روی سرور اعمال نگردد.
از همین رو بر روی هر هاست محدودیت روزانه در تعداد ایمیل ارسال دارند که برای هاستهای اشتراکی معمولا در روز بین ۱۰۰ تا ۳۰۰ عدد است. در صورتی که سایت شما کاربران زیادی دارد و فعالیت زیادی روی آن انجام میگیرد، شما باید از یک سرور میزبانی ایمیل یا SMTP جداگانه برای ارسال ایمیلهای خود استفاده کنید.
توجه: به دلیل همین محدودیتها، شرکتهای هاستینگ این قابلیت را دارند که اگر ایمیلهای بیشتری از تعداد تعیین شده توسط سایت شما، چه به صورت خواسته و چه ناخواسته ارسال شود، سرویس شما را تعلیق کنند. پس اگر سایت فروشگاهی یا کارر محور دارید که زیاد ایمیل ارسال میکنید، حتما از هاست ایمیل استفاده کنید.
اختلال در وردپرس
گاهی اوقات هم ارسال نشدن ایمیلهای وردپرس به دلیل اختلال در خود وردپرس رخ میدهد که ممکن است از افزونهها، قالب و حتی ناسازگاری که در توابع مورد نیاز برای ایمیل وردپرس نیاز است رخ دهد. اگر مشکل ارسال نشدن ایمیل وردپرس به دو دلیل قبلی نبود، میتوانید افزونهها را غیرفعال کرده و این موضوع را تست کنید. یا اینکه از قالب پیشفرض وردپرس موقتا استفاده کرده و ببینید که مشکل حل خواهد شد یا نه!
چگونگی حل مشکل ارسال نشدن ایمیل
حالا برای اینکه امکان ارسال ایمیل در وردپرس را داشته باشید، بهترین انتخاب این است که از ارسال ایمیل SMTP در وردپرس استفاده کنید. خود من در طول این چند سال برای سایتهایی که گزارشات باید از طریق ایمیل ارسال شوند، از این روش استفاده کردهام. حال ممکن است بپرسید که:
اصلا SMTP چیست؟!
SMTP که مخفف عبارت simple mail transfer protocol است، یک پروتکل TCP/IP است که از آن برای انتقال ساده ایمیل استفاده میشود. حال این انتقال میتواند برای دریافت ایمیل باشد یا اینکه از آن برای ارسال ایمیلها استفاده کنید.
حال به لطف این پروتکل که معمولا روی پورت ۲۵ کار میکند، از آن روی سرور استفاده میکنند تا نامههای الکترونیکی را به کمک این پروتکل از طریق نرم افزاری که روی سرور SMTP نصب شده است، منتقل کنند.
استفاده از سرور SMTP باعث میشود تا ایمیلهایی که باید از سایت و یا برنامه تحت وب شما ارسال شوند، جدا از سرور اصلی سایت انجام گیرد. از آنجایی که برای ارسال ایمیلها نیاز به منابع بالایی دارید، لازم است که در سایتهایی که روزانه حداقل بیش از ۵۰۰ ایمیل ارسال میشود از سرویس SMTP برای ارسال ایمیل استفاده کنند. این موضوع باعث میشود که بار مصرف منابع روی هاست سایت نیز کاهش یافته و در هنگام ارسال ایمیل به تعداد زیاد سایت نیز با کندی سرعت مواجه نشود.
راهکار اول: استفاده از SMTP های رایگان
شما میتوانید از سرویسهای ایمیل SMTP رایگان استفاده کنید که با جستجوی free smtp میتوانید چندین نمونه از آنها را پیدا کنید. اما مشکلی که وجود دارد و انها را پیشنهاد نمیکنم این است که:
- تعداد ایمیل ارسالی در این سرویسهای نیز با محدودیت در تعداد مواجه است.
- سرویسهای خارجی شناخته شدهی بیشتری در این زمینه وجود دارند که با تست چند مورد از آنها متاسفانه شخصا نتوانستم به این دلیل که در ایران هستم از آنها سرویس تهیه کنم.
- سرویس داخلی مناسبی سراغ ندارم و از آنجایی که ممکن است اطلاعات مهم مالی و هویتی کاربران را ارسال کنید، باید نگران امنیت آنها نیز باشید.
راهکار دوم: استفاده از هاست ایمیل
پیشنهادم این است که از یک هاست ایمیل استفاده کنید. سون هاست یکی از شرکتهای هاستینگ است که سرویس میزبانی ایمیل را با امکان اتصال به دامنه اختصاصی در اختیارتان قرار میدهد. میتوانید برای اهداف سازمانی از این سرویس استفاده کنید یا اینکه اگر مثل من با ایمیل شخصی بیشتر سر و کار دارید و تعداد ایمیل زیادی از سایتتان ارسال میشود از این سرویس استفاده کنید.
برای مشاهده این سرویس و پلنهای موجود میتوانید روی دکمهی زیر کلیک کرده و اطلاعات بیشتر را برای اطلاع از قیمت، مشخصات و ویژگیهایی که هاست ایمیل سون هاست دارد مشاهده کنید.
آموزش حل مشکل ارسال ایمیل در وردپرس با افزونه SMTP
حالا که با دلایل عدم ارسال ایمیل در سایت وردپرسی آشنا شدید و دانستید که بهترین راهکار برای ارسال ایمیلهای سایت در وردپرس چیست، حالا در ادامه به نحوه پیاده سازی و استفاده از ایمیل SMTP در وردپرس میپردازم.
برای این منظور میتوانید از افزونه رایگان Easy WP SMTP استفاده کنید که در مخزن وردپرس قرار داشته و تاکنون نیز موفق شده تا بیش از نیم میلیون نصب فعال در سایتهای مختلف را ازآن خود کند. این افزونه قابلیت اتصال تابع ایمیل وردپرس را به سرور SMTP به شما خواهد داد. با نصب این افزونه، کلیه ایمیلهایی که در وردپرس ارسال میشوند، در صورتی که توسط افزونههای دیگر یا قالب اختصاصی که دارید شخصی سازی نشده باشند، به سرور SMTP متصل شده و از طریق آن ارسال میشوند.
برای استفاده از این افزونه ابتدا روی دکمه زیر کلیک کرده و افزونه را از مخزن وردپرس دانلود کنید. یا اینکه میتوانید از پیشخوان وردپرس به منوی افزونهها> افزودن رفته و با جستجوی Easy WP SMTP که نویسنده افزونه با نامهای wpecommerce و alexanderfoxc مشخص است، به کمک آموزش نصب افزونه در وردپرس نصب کنید.
بعد از نصب و فعال سازی افزونه، مشابه تصویر زیر منویی با نام SMTP آسان وردپرس در منوی تنظیمات اضافه میشود. روی این منو کلیک کنید تا صفحه تنظیمات مربوط به وارد کردن اطلاعات ایمیل سرور SMTP باز شود.
- روی منوی تنظیمات در پیشخوان وردپرس هاور کنید.
- زیر منوی SMTP آسان وردپرس را انتخاب کنید تا صفحه تنظیمات افزونه SMTP وردپرس باز شود.
- سربرگ تنظیمات SMTP را انتخاب کنید.
- آدرس ایمیل فرستنده را وارد کنید. در این فیلد باید نشانی ایمیلی که در هاست ایمیل ساختید را وارد کنید یا اینکه اگر از SMTP های رایگان استفاده میکنید، آدرس ایمیلی که در اختیارتان قرار داده شده را وارد کنید.
- اگر قصد دارید تا از نام دلخواه برای عنوان ایمیل ارسال کننده در وردپرس استفاده شود، در این کادر وارد کنید. وردپرس به صورت پیشفرض کلیهی ایمیلهای ارسالی را با نام wordpress ارسال میکند که در اینجا میتوانید از نام دلخواه استفاده کنید.
- اگر فکر میکنید که ممکن است کاربران شما به ایمیلهای ارسالی پاسخ دهند، آدرس ایمیلی که میخواهید ایمیل کاربران در هنگام پاسخ دادن به آن ارسال شود را وارد کنید.
اطلاعاتی که شاید به دردتان بخورد: هدف من برای استفاده از ایمیل SMTP وردپرس این بوده که از یک سو بخاطر حملات DDoS که دارم، آیپی هاست من که متصل به کلودفلر است لو نرود و از سوی دیگر چون تعداد ایمیل تقریبا بالایی برای ارسال اعلان به کاربران دارم، از این قابلیت استفاده کردم. برخی کاربران نیز کاربران عادی هستند که ممکن است تصور کنند ایمیلهای ارسال شده به صورت عادی ارسال شده و به آن پاسخ دهند. برای همین به منظور پشتیبانی کاربران مورد ششم در اینجا که با عنوان پاسخ به نشانی ایمیل قرار دارد را پر کردم تا اگر کاربری به ایمیلهایی که به صورت اعلان ارسال میشوند پاسخ داد آنها را دریافت کنم.
حال در مرحلهی بعدی باید اطلاعات مربوط به سرور SMTP را وارد کنید. در اینجا چون من از هاست ایمیل برای این کار استفاده کردم، از سرور SMTP که دارم استفاده میکنم. اما اگر از سرویسهای SMTP رایگان استفاده میکنید یا اینکه میخواهید ایمیلها را از طریق جیمیل ارسال کنید باید تنظیمات مربوط به پورت، نوع رمزنگاری و آدرس سرور SMTP را متناسب با همان سرویس وارد کنید.
- در این فیلد باید آدرس هاست SMTP خود را وارد کنید. من از سرویس هاست ایمیل سون هاست استفاده میکنم؛ پس آدرس این سرویس را که در هنگام خرید سرویس اطلاعات برای من ایمیل شده وارد میکنم.
- در این بخش باید نوع رمزنگاری را انتخاب کنید. برای اینکه ایمیلها در محیط امنی رد و بدل شوند و رمزگذاری روی آنها انجام گیرد، گزینهی SSL/TLS را انتخاب کنید.
- از آنجایی که نوع رمزگذاری روی SSL/TLS انتخاب شده، لازم است که از پورت 587 استفاده کنیم. اگر از رمزگذاری استفاده نمیکنید میتوانید از پورت 25 استفاده کنید.
- برای اینکه هر بار در هنگام ارسال ایمیل لازم است که اصالت سنجی از طریق API انجام گیرد که مشخص شود ایمیلها واقعا از طریق این سرور SMTP وردپرس ارسال میشوند، باید در اینجا گزینه بله را انتخاب کنید. این عبارت درست مانند حالتی است که شما به صفحه ورود به مدیریت ایمیل هاست خود وارد میشوید که در آنجا از شما آدرس ایمیل و رمز ورود درخواست میشود.
- نام کاربری ایمیل هاست را وارد کنید.
- رمزی که از طریق آن وارد اکانت ایمیل هاست میشوید را وارد کنید.
در نهایت روی ذخیره تغییرات کلیک کنید تا به سراغ سایر تنظیمات افزونه SMTP وردپرس برویم. اما قبل از آن به این نکته توجه کنید.
نکته: در فلدی که باید پورت SMTP را وارد کنید، شما باید یکی از پورتهای رایج که شامل ۲۵، ۱۱۰، ۵۸۷ و البته برای سرویسهای دیگری نظیر سرویس گوگل که از پورتهای 9XX استفاده میکند وارد کنید. برای اینکه از پورت درست استفاده کنید حتما باید از جایی که سرور SMTP را انتخاب کردید سوال کنید که بر روی پورت SSL/TLS از کدام پورت میتوانید استفاده کنید. این پورت برای حالت STARTTLS و حالت بدون رمزگذاری پورت دیگری است.
حال روی سربرگ تنظیمات اضافی کلیک کرده و سایر تنظیماتی که این افزونه در اختیارتان قرار میدهد را بررسی کنید.
- Don’t Replace “From” Field: این گزینه برای زمانی است که شما از آدرس ایمیل دیگری برای ارسال ایمیل بخشهای دیگر سایت استفاده کنید. به عنوان نمونه ممکن است بخواهید ایمیلهای ووکامرس را با یک آدرس دلخواه مثل [email protected] ارسال کنید که مشخص شود این ایمیلها مربوط به سفارش خرید محصولات است. همانطور که ذکر کردم با استفاده از این افزونه کلیه ایمیلهای وردپرس از طریق ایمیل SMTP ارسال میشوند. حالا برای اینکه همچنان بتوانید از ایمیلهای دلخواه در بخشهایی از سایت ایمیل ارسال کنید این گزینه را باید فعال کنید تا سرویس SMTP وردپرس در آنها استفاده نشود. کافی است آدرس ایمیلهای استفاده شده را وارد کنید. اگر بیش از یک آدرس دارید با کاما انگلیسی از هم جدا کنید.
- Enable Domain Check: این گزینه بیشتر به درد توسعه دهندگان میخورد تا بخواهند از این سرویس برای ارسال ایمیل روی دامنه خاص استفاده کنند. در صورت فعال کردن این گزینه میتوانید آدرس دامنه دلخواه برای ارسال ایمیل را مشخص کنید.
- رمزگذاری رمزعبور: برای اینکه اطلاعات رمز ایمیل که در مراحل قبل وارد کردید(رمز سرویس SMTP) در حالت ایمنی قرار داشته باشد و رمز کدگذاری شود تا برای دیگران قابل مشاهده نباشد این گزینه را فعال کنید. با فعال کردن این گزینه و ذخیره تنظیمات، فیلد رمز سرویس ایمیل به صورت نقطههای گرد نمایش داده شده و سپس این گزینه نیز غیرفعال میشود.
- Allow Insecure SSL Certificates: با فعال کردن این گزینه اگر از SSL رایگان self-signed روی هاست ایمیل استفاده شده باشد، این اجازه را میدهید که از این پروتکل برای رمگذاری ایمیلها استفاده نشود.
- فعال کردن حالت اشکال زدایی: این گزینه هم یک فایل لاگ در اختیار شما قرار میدهد که با کلیک روی لینک «مشاهده گزارش» میتوانید لیست آخرین ایمیلهای ارسالی را همراه با جزییات آن که شامل آدرس گیرنده و عنوان ایمیل است ببینید.
حالا برای اینکه ارسال ایمیل را تست کرده و ببینیم که اتصال ایمیل SMTP به وردپرس انجام شده، به تب آزمایش ایمیل مراجعه میکنیم. در این تب میتوانید یک عنوان و متن دلخواه برای تست ایمیل ارسالی وارد کرده و آن را به آدرس ایمیل خود ارسال کنید.
- آدرس ایمیل گیرنده را وارد کنید. در اینجا من از جیمیل استفاده کردم تا از کارکرد صحیح آن مطمئنتر شوم.
- عنوان ایمیل را وارد کنید.
- پیغام خود را برای تست ایمیل SMTP وردپرس وارد کنید.
- روی دکمهی ارسال ایمیل آزمایشی کلیک کنید.
در این صورت ارسال انجام گرفته و در همین صفحه نتیجه آن را خواهید دید که اگر تنظیمات به درستی وارد شده باشند، با پیغام Test email was successfully sent. No errors occurred during the process نمایش داده میشود.
حالا اگر به آدرس ایمیل گیرنده هم که مراجعه کنید مشابه تصویر زیر میبینید که این ایمیل در کسری از ثانیه ارسال شده است. البته در اینجا من چند دقیقهای مشغول ویرایش تصویر قبلی بودم که زمان ایمیل روی ۳ دقیقه پیش نمایش داده میشود. :دی
جمع بندی نهایی
در این آموزش به نحوه حل مشکل ارسال ایمیل در وردپرس پرداختم و راهکار مربوط به حل این مشکل که استفاده از SMTP وردپرس است را به شما معرفی کردم. در صورتی که مشکل یا سوالی در خصوص استفاده از این روش برای ارسال ایمیلهای سایت دارید از بخش نظرات ارسال کنید تا شما را راهنمایی کنم.
با عرض سلام و خسته نباشید خدمت سایت سون هاست
من دنبال یک افزونه هستم که وقتی کاربر دیدگاهش تایید شد براش ایمیل ارسال بشه که دیدگاه شما تایید شد
ممنون میشم راهنماییم کنید.
سلام آرمین جان، میتونید از افزونه Subscribe to Comments Reloaded استفاده کنید. بهزودی آموزش این افزونه هم در وبلاگ سون هاست قرار میگیره.
خیلی ممنون از پاسختون
خیلی لطف کردین
سلام مجدد خدمت سایت سون هاست
ممنون بابت پاسخی که دادین
یک مشکل با این افزونه دارم اونم اینه که وقتی کاربر روی لینک تغییر اشتراک یا عضویت در اشتراک یا کلا هر لینکی که مربوط به اشتراک میشه کلیک میکنه ارور میده صفحه ای پیدا نشد
چطور میتونم کاری کنم که کاربر بتونه اگر خواست اشتراکش رو تغییر بده
یا کاری کنم که خودم اشتراک هر کاربر رو از قبل مشخص کنم و نیازی نباشه کاربر اشتراکش رو مشخص کنه و اشتراکی که مشخص میکنم اینجوری باشه که هروقت پاسخی دریافت کرد ایمیل دریافت کنه.
سلام، احتمال میدم این مشکل از سمت تنظیمات پیوند یکتا وردپرس باشه که خطای 404 میده. یک بار به منوی تنظیمات> پیوندهای یکتا مراجعه کنید و روی دکمه «ذخیره تغییرات» کلیک کنید. بدون اینکه تغییراتی در تنظیمات داده بشه.
بررسی کنید اگر برطرف نشد، فایل htaccess. رو از داخلی هاست پاک کنید و دوباره روی دکمه «ذخیره تغییرات» کلیک کنید.
افزونه email approved رو نصب کردم ولی ایمیل ارسال نمیکرد
کاربر برای عضویت باید ایمیلش تایید بشه و اونجا براش ایمیل تایید ارسال میشه اما موقع تایید دیدگاهش ایمیل ارسال نمیشه
ممنون میشم راهنماییم کنید.