0

برای استفاده بهتر از سایت، به حساب تون وارد بشید

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

  • ۱۳۹۹/۰۲/۱۷
  • ۰

همون طور که در دوره‌ی «طراحی و ساخت وبسایت؛ بدون کدنویسی» آموزش داده ام، قبل از این که قالب وبسایت مون رو به یه هاست یا سرور واقعی انتقال بدیم، اون رو روی لوکال هاست زمپ یا ومپ (XAMPP یا WAMP) قرار می‌دیم و تنظیم‌های اولیه و شخصی‌سازی‌ها رو انجام می‌دیم و وقتی که از کارایی اون، مطمئن شدیم، حالا اون رو از لوکال هاست به یه هاست یا سرور واقعی انقال می‌دیم؛ ولی یکی از مشکل‌هایی که ما معمولاً داریم، ارسال نشدن ایمیل در لوکال هاست ئه.

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

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

من توی این آموزش، هر دو تای این افزونه‌ها رو آموزش می‌دم که شما بتونید درست مثل یه سایت آنلاین، توی لوکال هاست هم ارسال ایمیل داشته باشید؛ ولی انگار توی لوکال هاست زمپ (XAMPP) و در نسخه‌ی ۶۴ بیتی ویندوز، با افزونه‌ی Easy WP SMTP هم نمی‌شه ارسال ایمیل داشت؛ چون لوکال هاست زمپ برای ارسال ایمیل از توابع PHP استفاده می‌کنه که با نسخه‌ی ۶۴ بیتی ویندوز سازگار نیست؛ ولی توی نسخه‌ی ۳۲ بیتی ویندوز، مشکلی نداریم. به هر حال، انگار با افزونه‌ی WP Mail SMTP by WPForms توی همه‌ی نسخه‌های ویندوز می‌شه ایمیل‌ها رو ارسال کرد؛ ولی خب، من استفاده از هر دو تا افزونه رو آموزش می‌دم و خودتون آزمایش کنید که کدوم اش براتون جواب می‌ده.

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

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

۱- ارسال ایمیل در لوکال هاست با افزونه‌ی WP Mail SMTP by WPForms

برای این کار، ابتدا وارد پنل مدیریت وردپرس بشید و از بخش «افزونه‌ها»، گزینه‌ی «افزودن» رو انتخاب کنید و عبارت WP Mail رو سرچ کنید و افزونه‌ی مد نظر رو نصب و فعال کنید.

ارسال ایمیل در لوکال هاست با افزونه‌ی WP Mail SMTP by WPForms
ارسال ایمیل در لوکال هاست با افزونه‌ی WP Mail SMTP by WPForms

با نصب و فعال کردن افزونه، گزینه‌ای به اسم «ایمیل» به منوی سمت راست پنل مدیریت وردپرس اضافه می‌شه.

حالا از گزینه‌ی «ایمیل»، بخش «تنظیمات» رو انتخاب کنید تا با صفحه‌ی زیر روبرو بشید و توی سربرگ «عمومی»، تنظیم‌های زیر رو انجام بدید:

ایمیل ارسال‌کننده: توی این فیلد، آدرس Gmail تون رو بنویسید که می‌خواید ایمیل‌ها تون با اون، ارسال بشن.

Force From Email: اگر می‌خواید که بدون توجه به تنظیم افزونه‌های دیگه برای ارسال ایمیل‌ها شون، همه‌ی ایمیل‌های وبسایت تون با اون ایمیل (ایمیل ارسال‌کننده) ارسال بشه و کاربرها، اون ایمیل رو به عنوان ایمیل ارسال‌کننده ببین، این گزینه رو تیک بزنید.

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

Force From Name: اگر می‌خواید که بدون توجه به تنظیم افزونه‌های دیگه برای ارسال ایمیل‌ها شون، همه‌ی ایمیل‌های وبسایت تون با اون نام و عنوان (نام ارسال‌کننده) ارسال بشه و کاربرها، اون نام رو به عنوان نام ارسال‌کننده ببین، این گزینه رو تیک بزنید.

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

ارسال‌کننده‌ی ایمیل: توی این بخش، باید سرویس ارسال‌کننده ایمیل تون رو انتخاب کنید که چون ما می‌خوایم ایمیل‌ها مون رو با Gmail ارسال کنیم، باید گزینه‌ی جیمیل رو انتخاب کنیم. اگر شما بخواید که با میزبانی یا هاست ایمیل تون، ایمیل‌ها تون رو ارسال کنید، باید گزینه‌ی «SMTPهای دیگر» رو انتخاب کنید.

افزونه wp mail

حالا توی مرحله‌ی بعد، برای این که ایمیل‌ها مون از سوی API گوگل در لوکال هاست، ارسال بشن، باید به کنسول جستجوی گوگل مراجعه کنیم و یه Client ID و Client Secret بسازیم. برای این کار، باید به این صفحه از کنسول گوگل بریم و توی اون جا، یه پروژه ایجاد کنیم. البته شما باید قبل از رفتن به اون صفحه، به حساب جیمیل تون که می‌خواید ایمیل‌ها تون رو با اون بفرستید، لاگین کنید و وارد بشید و بعد، به اون صفحه از کنسول گوگل برید. با این کار، یه پروژه‌ی جدید براتون ساخته می‌شه که به صورت پیش‌فرضریال Gmail API توی اون، عال ئه. حالا، قدم به قدم، مراحل رو با هم پیش می‌ریم:

کنسول گوگل
کنسول گوگل

بعد که دکمه‌ی «What credentials do I need» رو کلیک کردید، پنجره‌ی زیر باز می‌شه که شما باید روی گزینه‌ی «Set up consent screen» کلیک کنید. با این کار به صفحه‌ی دیگه‌ای منتقل می‌شید و تنظیمات اون صفحه رو به صورت زیر انجام بدید:

حالا در Application Name، یه نام دلخواه انتخاب می‌کنیم. این نام رو ما بعدها توی تاییدیه‌ی جیمیل می‌بینیم. پس یه نام مربوط انتخاب کنید. توی بخش Support Email هم اون حساب ایمیلی که می‌خواید از طریق اون، ایمیل‌ها تون رو ارسال کنید، انتخاب کنید.

تنظیم‌های کنسول گوگل

حالا به صفحه‌ی قبل برمی‌گردیم و تنظیم‌های اون رو ادامه می‌دیم. توی اون صفحه، در بخش Name یه نام دلخواه انتخاب می‌کنیم و توی بخش Authorized JabaScript Origins، نام اون دامنه‌ای رو انتخاب می‌کنیم که می‌خوایم ایمیل‌ها مون از اون جا ارسال بشن (دامنه‌ی سایت مون). توی بخش Authorized Redirect URLs اون کدی رو که توی افزونه‌ی WP Mail SMTP هست، کپی می‌کنیم و اون جا قرار می‌دیم.

افزونه wp mail
تنظیم کنسول گوگل

با کلیکی روی دکمه‌ی Done، به صحفه‌ی زیر منتقل می‌شیم که توی اون جا باید روی Client ID که ساخته بودیم، کلیک کنیم.

بعد از کلیک روی مورد مد نظر، می‌تونیم کدهای Client ID و Client Secret رو ببینیم.

کنسول گوگل

حالا باید اون دو تا کد رو کپی کنیم و اون‌ها رو توی افزونه قرار بدیمو روی دکمه‌ی «ذخیره تنظیمات» کلیک کنیم.

توی مرحله‌ی بعد، باید روی دکمه‌ی «اجازه به افزونه برای ارسال ایمیل با استفاده از حساب کاربری گوگل شما» که توی افزونه هست، کلیک کنیم. با این کار، ما به صفحه‌ای منتقل می‌شیم که باید با همون حساب گوگل Client ID رو ساختید، انتخاب کنید و تایید کنید که اون افزونه از حساب ایمیل شما استفاده کنه.

ورود به جیمیل

اگر با خطای This app is not verified روبرو شدید، روی Advance کلیک کنید و گزینه‌ی زیر رو بزنید:

در زیر karnetacom email همون نامی ئه که خودمون قبلاً انتخاب کرده بودیم:

تایید دسترسی به افزونه

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

ورود به پیشخوان وردپرس
تایید دسترسی افزونه

بعد از این مرحله‌ها، می‌تونید به زبانه‌ی «آزمایش ایمیل» برید و آدرس یه ایمیل رو وارد کنید و روی دکمه‌ی «ارسال ایمیل» کلیک کنید تا یه ایمیل آزمایشی براتون ارسال بشه تا مطمئن بشید که ایمیل‌ها تون ارسال می‌شن.

ارسال ایمیل تست

۲- ارسال ایمیل در لوکال هاست با افزونه‌ی Easy WP SMTP

برای استفاده از این افزونه، عبارت زیر رو در بخش «افزودن» از گزینه‌ی «افزونه‌ها» سرچ کنید و افزونه رو نصب و فعال کنید.

افزونه easy wp smtp

بعد از فعال کردن افزونه، گزینه‌ی «Easy WP SMTP» به بخش «تنظیمات» اضافه می‌شه. روی اون کلیک کنید تا وارد تنظیمات افزونه بشیم.

حالا تنظیمات افزونه رو به صورت زیر انجام می‌دیم:

From Email Address: توی این فیلد، آدرس Gmail تون رو بنویسید که می‌خواید ایمیل‌ها تون با اون، ارسال بشن.

From Name: توی این فیلد، یه نام بنویسید که می‌خواید کاربرها تون با دریافت اون ایمیل شما، اون نام رو در عنوان ایمیل‌های شما ببینن.

Force From Name: اگر می‌خواید که بدون توجه به تنظیم افزونه‌های دیگه برای ارسال ایمیل‌ها شون، همه‌ی ایمیل‌های وبسایت تون با اون نام و عنوان (نام ارسال‌کننده) ارسال بشه و کاربرها، اون نام رو به عنوان نام ارسال‌کننده ببین، این گزینه رو تیک بزنید.

Reply to email address: گاهی پیش می‌آد که نیاز ئه کاربرها به ایمیل شما پاسخ بدن. توی این گزینه مشخص می‌کنیم که پاسخ کاربرها رو توی چه ایمیلی دریافت کنیم.

SMTP HOST: توی این فیلد، آدرس SMTP ایمیل تون رو وارد کنید. هر سرور ایمیل یه آدرس SMTP داره و چون ما می‌خوایم از جیمیل استفاده کنیم، باید توی این فیلد، آدرس smtp.gmail.com رو وارد کنیم.

Type of Encryption: توی این بخش گزینه SSL/TLS رو انتخاب کنید. البته اگر ایمیل ارسال نشد، گزینه‌های دیگه رو هم امتحان کنید.

SMTP Port: توی این فیلد، باید پورت سرور SMTP تون رو وارد کنید. پورت SMTP برای جیمیل، ۴۶۵ ئه.

SMTP Authentication: من پیشنهاد می‌کنم که اول، این گزینه رو بر روی حالت NO قرار بدید و یه ایمیل تست ارسال کنید، اگر اون ایمیل ارسال شد، تنظیمات رو تموم کنید؛ ولی اگر ایمیلی ارسال نشد (که معمولاً این ارسال نمی‌شه)، اون رو روی YES قرار بدید و بعد، آدرس و رمز اکانت جیمیل تون رو توی فیلدهای بعدی وارد کنید تا افزونه بتونه با نام کاربری و رمز اکانت جیمیل شما، به اکانت جیمیل تون دسترسی داشته باشه و ایمیل‌ها رو ارسال کنه.

SMTP username: توی این فیلد، آدرس جیمیل تون وارد کنید؛ مثلاً karnetacom@gmail.com

SMTP Password: توی این فیلد، رمز جیمیل تون رو وارد کنید.

بعد از وارد کردن این فیلدها، تنظمیات رو ذخیره کنید و بعد به تب Test Email برید و برای ایمیل دلخواه تون، یه ایمیل تست بفرستید. برای همین، توی فیلد TO آدرس اون ایمیلی که می‌خواید ایمیل تست رو براش بفرستید، وارد کنید و توی فیلد Subject، عنوان ایمیل رو وارد کنید و توی فیلد Message هم پیام مد نظر تون رو وارد کنید و در نهایت، دکمه‌ی Send Test Email رو بزنید تا ایمیل تست شما ارسال بشه.

پیشنهاد می‌کنم که توی فیلد Subject به کلمه‌هایی مثل «تست» یا «Test» استفاده نکنید؛ چون این جوری، توسط سرویس‌دهنده‌ی ایمیل، یه ایمیل اسپم شناخته می‌شه.

البته شاید ارسال ایمیل، چند ثانیه‌ای طول بکشه؛ ولی اگر همه چیز، درست باشه، پیام زیر رو دریافت می‌کنیم:

This email was successfully sent. No errors occurred during the process.

ارسال ایمیل تست و آزمایش

یه نکته که توی استفاده از این افزونه‌ها برای ارسال ایمیل از طریق Gmail وجود داره، این ئه که اگر بریا اون حساب جیمیل تون از تایید هویت دو مرحله‌ای (ارسال رمز عبور برای ورود به حساب جیمیل یا استفاده از برنامه‌هایی مثل Google authenticator) استفاده می‌کنید، باید این ویژگی رو غیرفعال کنید.؛ چون این جوری، این افزونه‌ها نمی تونن تایید هویت بشن و در نتیجه، نمی‌تونن ایمیل‌ها رو ارسال کنن.

نکته‌ی دیگه‌ای که توی استفاده از این افزونه‌ها برای ارسال ایمیل با Gmail بدون API (استفاده از Client ID توی روش اول) وجود داره، این ئه گاهی برای استفاده از روش دومی که گفته شد (بدون استفاده از API) باید سطح امنیت و حساسیت رو برای حساب جیمیل مون کم کنیم تا افزونه بتونه ایمیل‌ها رو ارسال کنه و سیستم امنیتی جیمیل، از اون جلوگیری نکنه. برای این کار به این آدرس برید و تیک گزینه‌ی Less Secure app access رو روشن کنید.

less secure app

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

دوره‌های کارنتـا رو دیدید؟

دوره‌هایی که یه موضوع رو از صفر تا صد، بهتون آموزش می‌دن!

دوره‌های کارنتـا

مشاوره کاملاً رایگان

دیدگاه و امتیاز تون رو بذارید

متاسف ام که این رو می‌گم؛ ولی شما الان نمی‌تونید کامنت و امتیاز بذارید. برای این کار، اول باید به حساب کاربری تون، وارد بشید و برای وارد شدن، باید یه بار، توی سایت، ثبت‌نام کنید.